یکی از مباحث مهم در برنامه نویسی تحت وب ، تائید هویت کاربران و امکان ورود و خروج کاربران سایت است. برای پیاده سازی ورود و خروج کاربر از session استفاده می شود. در این بخش نحوه شناسایی کاربر را در زبان پی اچ پی آموزش می دهیم.
یکی از کاربردهای session(برای آشنایی با نحوه کار session ها به آموزش کار با session ها مراجعه کنید) شناسایی کاربران برای دسترسی به صفحات مختلف سایت است به این صورت که در صفحه لاگین ، پس از تائید هویت کاربر یک متغیر در session ایجاد کرده و مقداری دلخواه (بعنوان مثال نام کاربری) را درآن قرار می دهیم . سپس در ابتدای هر صفحه که برای دیدن آن نیاز به لاگین است، دستوراتی قرار داده و وجود متغیر فوق را بررسی می کنیم. اگر این متغیر وجود داشت به معنی مجاز بودن کاربر است در غیراینصورت کاربر غیر مجاز است و باید به صفحه لاگین هدایت شود.
1- ورود کاربر به سیستم
قبل از هر کاری باید جدول زیر را به بانک اطلاعاتی اضافه کنیم، و چند کاربر در آن درج نمائیم:
جدول کاربران (tbl_users ) |
||
نام ستون |
کاربرد |
ملاحظات |
Uid |
شماره کاربر |
کلید اصلی و خودافزایشی |
Uname |
نام کاربری |
طول 20 کاراکتر |
Upass |
کلمه عبور |
طول 20 کاراکتر |
سپس فرم ورود کاربر را بصورت زیر طراحی می کنیم
فایل login1.php
<form action="login2.php" method="post">
Username: <input name="user" type="text" /><br>
Password: <input name="pass" type="password" /><br>
<input type="submit" value=” Login ” />
<input type="reset" value=” Clear ” />
</form>
فرم فوق به برنامه زیر ارسال حواهد شد.
محتوای فایل login2.php
<?php
$uname= $_POST['uname'];
$upass= $_POST['upass'];
require('config.php');
$res=$conn->query("select * from tbl_users wher uname='$uname' and upass='$upass' " );
$row=$res->fetch_assoc($res );
if ( $row ) {
session_start();
$_SESSION['uname'] = $uname ;
header('location:stud-list.php');
} else header('location:login1.php');
?>
در قطعه کد فوق،یک پرس و جو برای یافتن کاربران دارای نام کاربری و کلمه عبور وارد شده در فرم ورود کاربر روی بانک اطلاعاتی اجرا می شود. اگر کاربری با این مشخصات پیدا شد Session شروع بکار کرده و نام کاربری در متغیر $_SESSION[‘uname’] ذخیره می شود. و سپس به صفحه stud-list.php هدایت می شود تا لیست دانشجویان را نمایش دهد. در غیر این صورت به صفحه login1.php هدایت می کند تا دوباره نام کاربری و کلمه عبور را دریافت کند.
2- کنترل دسترسی کاربر به صفحه
در صورتی که برای بازکردن یک صفحه نیاز به لاگین می باشد، باید در ابتدای صفحه بررسی شود: اگر در داخل Session ، متغیر$_SESSION[‘uname’] وجود دارد ، اجازه اجرای صفحه داده شود و گرنه کاربر به صفحه لاگین هدایت شده و از او نام کاربری و کلمه عبور درخواست شود. برای این منظور در ابتدای تمام صفحات مدیریتی وب سایت بعنوان مثال صفحات نمایش لیست دانشجویان، افزودن دانشجو، ویرایش دانشجو، حذف دانشجو و … قطعه کد زیر را اضافه می کنیم.
<?php
session_start();
if ( ! isset( $_SESSION['uname'] ) )
header('location:login1.php');
?>
//ادامه طراحی صفحه
...
در این قطعه کد ابتدا session شروع بکارمیکند و سپس بررسی میشود که متغیر $_SESSION[‘uname’] در حافظه وجود دارد؟ اگر وجود داشت به معنای ورود کاربر از طریق فرم لاگین است و او را به صفحه نمایش لیست دانشجویان هدایت می کند ، اگر وجود نداشت به صفحه login.php هدایت میکند.
3- خروج کاربر از سیستم
همچنین وقتی کاربری از طریق فرم لاگین تائید هویت شده و مجاز شناخته شده تا صفحات مدیریتی را مشاهده کند و عملیات مدیریت اطلاعات مثل درج، حذف و ویرایش انجام دهد، لازم است تا این موضوع از طریق نمایش یک پیغام خوش آمد و نام کاربری (یا نام واقعی) او و نیز لینک “خروج از سیستم” به او نشان داده شود تا در صورت تمایل بتواند از سیستم خارج شود. برای این کار به هر صفحه مدیریتی قطعه کدی بصورت زیر اضافه می کنیم:
Welcome <?php echo $_SESSION['uname']; ?>
[ <a href="logout.php"> Logout </a> ]
در قطعه کد فوق یک پیوند به فایل logout.php نشان داده شده است. در فایل logout.php باید ابتدا session را شروع کرده و سپس آنرا از بین ببریم و سپس کاربر را به صفحه ورود کاربر هدایت کنیم:
فایل logout.php
<?php
session_start();
session_destroy();
header("location:login1.php");
?>
برای درک و یادگیری بهتر اعتبارسنجی کاربر در ابتدای صفحه و نمایش خوش آمدگویی و لینک خروج، صفحه stud-list.php بصورت کامل در زیر آمده است:
بالای صفحه stud-list.php
<?php
session_start();
if ( ! isset( $_SESSION['uname'] ) )
header('location:login.php');
?>
<html>
<body>
<p>
Welcome <?php echo $_SESSION['uname']; ?>
[ <a href="logout.php"> Logout </a> ]
</p><hr>
<table width="600" border="1" align="center" dir="rtl">
<tr>
<th>SID</th><th>NAME</th><th>AVERAGE</th><th>FID</th><th> </th></tr>
<?php
require("config.php");
…
</body>
</html>