在大多數的網站開發過程中,更具實際的需要,需要劃分管理員和普通使用者對操作網站的許可權。下面通過一個具體的代碼執行個體進行一下全面的講解。給朋友們更直觀的感受,可以綜合前面學過的知識,讓自己的代碼和思路有一定的提升。
首先通過使用者登入頁面提交的使用者資訊來驗證使用者操作網站的許可權。
具體開發步驟如下所示:
(1) 設計一個登陸的頁面,添加一個form表單,使用POST方式進行參數傳遞, action 指向的資料處理頁面為 default.php , 添加一個使用者名稱文字框並命名為 user,添加一個密碼域文字框並命名為 pwd ,通過submit按鈕進行提交跳轉,其主要的代碼如下所示。
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script type="text/javascript"> function check(form){ if(form.uesr.value == ""){ alert("請輸入使用者名稱"); } if(form.pwd.value == ""){ alert("請輸入密碼"); } form.submit(); } </script></head><body><form name="form1" method="post" action="default.php"> <table width="520" height="390" border="0" cellpadding="0" cellspacing="0"> <tr> <td valign="top"> <table width="520" border="0" cellspacing="0" cellpadding="0"> <tr> <td height="24" align="right">使用者名稱:</td> <td height="24" align="left"> <input name="user" type="text" id="user" size="20"> </td> </tr> <tr> <td height="24" align="right">密 碼:</td> <td height="24" align="left"> <input name="pwd" type="password" id="pwd" size="20"> </td> </tr> <tr align="center"> <td height="24" colspan="2"> <input name="submit" type="submit" value="提交" onclick="return check(form);"> <input type="reset" name="reset" value="重設"> </td> </tr> <tr> <td height="76"> <span>超級使用者: admin 密 碼:111 </span> <br><br> <span>普通使用者: tom 密 碼:000 </span> </td> </tr> </table> </td> </tr> </table></form></body></html>
(2)在 “提交” 按鈕的單擊事件下,調用自訂函數 check() 來驗證表單元素是否為空白。這裡使用了javascript代碼進行驗證,有關javascript的知識請自行補腦。自訂函數 check() 代碼如下:
<script type="text/javascript"> function check(form){ if(form.uesr.value == ""){ alert("請輸入使用者名稱"); } if(form.pwd.value == ""){ alert("請輸入密碼"); } form.submit(); } </script>
(3) 提交表單元素到資料處理頁 default.php。首先使用 session_start() 函數初始化 session變數,在使用 POST方法 接收表單元素的值,將擷取的使用者名稱和密碼分別賦值給 session變數,其代碼如下所示:
<?php session_start(); $_SESSION['user']=$_POST['user']; $_SESSION['pwd']=$_POST['pwd'];?>
(4)為防止其他使用者非法登入本系統,使用if 條件陳述式對 session變數的值進行判斷,這裡繼續使用了javascript的知識,其代碼如下所示:
<?php if($_SESSION['user']==""){ echo '<script type="text/javascript">alert("請使用正確途徑登入"); history.back();</script>'; }?>
(5)在資料處理頁面 default.php 中添加如下的導覽列代碼,判斷目前使用者的層級,看已登入的使用者是管理員還是普通使用者,然後區別的輸出顯示:
<table align="center" cellpadding="0" cellspacing="0"> <tr align="center" valign="middle"> <td style="width: 140px; color: red;">目前使用者: <!-- 輸出當前登入使用者層級--> <?php if($_SESSION['user']=="admin"&&$_SESSION['pwd']=="111"){ echo "管理員"; }else{ echo "普通使用者"; } ?> </td> <td width="70"><a href="default.php">首頁</a><td> <td width="70">|<a href="default.php">文章</a><td> <td width="70">|<a href="default.php">相簿</a><td> <td width="100">|<a href="default.php">修改密碼</a><td> <?php if($_SESSION['user']=="admin"&& $_SESSION['pwd']=="111") { //如果目前使用者是管理員 //如果目前使用者是管理員 則輸出 使用者管理 echo '<td width="100">|<a href="default.php">使用者管理</a><td>'; } ?> <td width="100">|<a href="safe.php">登出使用者</a><td> </tr></table>
(6)在上面的 default.php 頁面中添加 “登出使用者”的超連結頁面 safe.php,並在 safe.php 中寫入如下的代碼,進行刪除使用者 Session,返回登入頁面:
<?php session_start(); //初始化 session unset($_SESSION['user']); //刪除使用者名稱會話變數 unset($_SESSION['pwd']); //刪除密碼會話變數 session_destroy(); //刪除當前所有會話變數 header("location:index.php"); //跳轉到使用者登入頁?>
(7) 運行這個執行個體,在網站使用者登入頁面輸入使用者名稱和密碼 ,分別以超級使用者的身份登入網站或者使用普通使用者身份登入網站運行一下。