国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

php 用戶登錄驗證碼的實現方法

2024-05-04 21:59:00
字體:
來源:轉載
供稿:網友

下面我們用Mysql數據庫來存儲用戶的身份,我們需要從數據庫中提取每個帳號的用戶名和密碼以便與$PHP_AUTH_USER和$PHP_AUTH_PW變量進行比較,判斷用戶的真實性.

首先,在MySql中建立一個存放用戶信息的數據庫,數據庫名為XinXiKu,表名為user;表定義如下:

  1. create table user
  2. ID INT(4) NOT NULL AUTO_INCREMENT, 
  3. name VARCHAR(8) NOT NULL
  4. password CHAR(8) NOT NULL
  5.  PRIMARY KEY(ID) 

說明:

1、ID為一個序列號,不為零而且自動遞增,為主鍵;

2、name為用戶名,不能為空;

3、password為用戶密碼,不能為空;

以下是用戶驗證文件login.php,實例代碼如下:

  1. //判斷用戶名是否設置 
  2.  if(!isset($PHP_AUTH_USER)) 
  3.  { 
  4.  header("WWW-Authenticate:Basic realm="身份驗證功能""); 
  5.  header("HTTP/1.0 401 Unauthorized"); 
  6.  echo "身份驗證失敗,您無權共享網絡資源!"
  7.  exit(); 
  8.  } 
  9.  /*連接數據庫*/ 
  10. $db=mysql教程_connect("localhost","root",""); 
  11. //選擇數據庫 
  12. mysql_select_db("XinXiKu",$db); 
  13. //查詢用戶是否存在 
  14. $result=mysql_query("SELECT * FROM user where name='$PHP_AUTH_USER' and password='$PHP_AUTH_PW'",$db); 
  15. if ($myrow = mysql_fetch_row($result)) 
  16. {//開源代碼Vevb.com 
  17. //以下為身份驗證成功后的相關操作 
  18. ... 
  19. else 
  20. //身份驗證不成功,提示用戶重新輸入 
  21. header("WWW-Authenticate:Basic realm="身份驗證功能""); 
  22. header("HTTP/1.0 401 Unauthorized"); 
  23. echo "身份驗證失敗,您無權共享網絡資源!"
  24. exit(); 

程序說明:

在程序中,首先檢查變量$PHP_AUTH_USER是否已經設置,如果沒有設置,說明需要驗證,腳本發出HTTP 401錯誤號頭標,告訴客戶端的瀏覽器需要進行身份驗證,由客戶端的瀏覽器彈出一個身份驗證窗口,提示用戶輸入用戶名和密碼,輸入完成后,連接數據庫,查詢該用用戶名及密碼是否正確,如果正確,允許登錄進行相關操作,如果不正確,繼續要求用戶輸入用戶名和密碼.

函數說明:

1、isset():用于確定某個變量是否已被賦值,根據變量值是否存在,返回true或false

2、header():用于發送特定的HTTP標頭,注意,使用header()函數時,一定要在任何產生實際輸出的HTML或PHP代碼前面調用該函數.

3、mysql_connect():打開 MySQL 服務器連接.

4、mysql_db_query():送查詢字符串 (query) 到 MySQL 數據庫.

5、mysql_fetch_row():返回單列的各字段.

用session實現服務器驗證

對于需要身份驗證的頁面,使用apache服務器驗證是最好不過的了,但是,apache服務器驗證的界面不夠友好,而且,cgi模式的php,iis下的php,都不能使用apache服務器驗證,這樣,我們可以利用session在不同頁面間保存用戶身份,達到身份驗證的目的.

在后端我們同樣利用上面的Mysql數據庫存放用戶信息,我們先編寫一個用戶登錄界面,文件名為login.php,代碼如下:

  1. <form action="login1.php"> 
  2. 用戶名:<input type="text" name="name"><br> 
  3. 口 令:<input type="text" name="pass"><br> 
  4. <input type="submit" value="登錄"> 
  5. </form> 

login1.php處理提交的表單,代碼如下:

  1. $db=mysql_connect("localhost","root",""); 
  2.  mysql_select_db("XinXiKu",$db); 
  3.  $result=mysql_query("SELECT * FROM user where name='$name' and password='$pass'",$db); 
  4.  if ($myrow = mysql_fetch_row($result)) 
  5.  {//開源代碼Vevb.com 
  6.  //注冊用戶 
  7.  session_start(); 
  8.  session_register("user"); 
  9.  $user=$myrow["user"]; 
  10. // 身份驗證成功,進行相關操作 
  11. ... 
  12. else 
  13. echo"身份驗證失敗,您無權共享網絡資源!"

這里需要說明的是,用戶可以使用在后續的操作中用**http://domainname/next.php?user=用戶名 **來繞過身份驗證,所以,后續的操作應先檢查變量是否注冊:已注冊,則進行相應操作,否則視為非法登錄,相關代碼如下:

  1. session_start(); 
  2. if (!session_is_registered("user")) 
  3.   { 
  4.   echo "身份驗證失敗,屬于非法登錄!"
  5.   } 
  6.   else 
  7.   { 
  8.   //成功登錄進行相關操作 
  9.   ... 
  10.  }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 龙江县| 通化县| 呼玛县| 黑河市| 铁岭县| 佛坪县| 甘孜县| 印江| 额尔古纳市| 涿鹿县| 方正县| 车致| 临夏市| 昌平区| 泸定县| 偏关县| 平武县| 黄梅县| 乳山市| 景德镇市| 西充县| 介休市| 保靖县| 土默特左旗| 宜宾县| 遵义县| 自治县| 佛学| 麻江县| 赣州市| 正阳县| 曲阜市| 平潭县| 二连浩特市| 驻马店市| 营口市| 洪雅县| 临高县| 钟祥市| 老河口市| 凤冈县|