用AJAX 驗證使用者登入的一個好處是不重新整理跳轉頁面,外加用到驗證碼就更安全了,摸索的寫了下。一共用到三個檔案:
yz.php: 產生驗證碼的PHP 檔案,將驗證碼將在SESSION 裡,供登入時對比調用
index.php: 使用者登入的HTML 檔案
loginCheck.php: 驗證使用者登入的檔案
下面一一解析:
yz.php 檔案
<?php session_start(); //產生驗證碼圖 Header("Content-type: image/PNG"); //長與寬 $im = imagecreate(44,18); // 設定背景色: $back = ImageColorAllocate($im, 245,245,245); // 填充背景色: imagefill($im,0,0,$back); srand((double)microtime()*1000000); $vcodes; //產生4位元字 for($i=0;$i<4;$i++){ $font = ImageColorAllocate($im, rand(100,255),rand(0,100),rand(100,255)); $authnum=rand(1,9); $vcodes.=$authnum; imagestring($im, 5, 2+$i*10, 1, $authnum, $font); } //加入幹擾象素 for($i=0;$i<100;$i++){ $randcolor = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255)); imagesetpixel($im, rand()%70 , rand()%30 , $randcolor); } ImagePNG($im); ImageDestroy($im); // 將四位的驗證碼儲存在 SESSION 裡,登入時調用對比 $_SESSION["VCODE"]=$vcodes;?>
index.php: 注意,在這檔案裡不要取 $_SESSION["VCODE"], 否則會取晚一步的,重新整理後才能顯示上一個驗證碼
在 loginCheck.php 裡驗證就好了
管理後台| 請登入
loginCheck.php 驗證使用者登入的檔案
<?php session_start(); include("../conn/connDB.php"); // 取得POST過來的參數: $username=$_POST["username"]; $password=md5($_POST["password"]); $authCode=$_POST["authCode"]; $feedback="no";//對比是否==SESSION中的驗證碼,不能放在用戶端做,否則取不正確的值 if($authCode==$_SESSION["VCODE"]){ $SQL="select * from users where username='$username' and password='$password'"; $result=mysql_query($SQL); $rows=mysql_num_rows($result); if($rows==1) // 驗證成功 $feedback="ok"; $_SESSION["admin"]=true; //為了後台安全,存入SESSION,表明 ADMIN 已登入,供後面調用 } echo $feedback; ?>
以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援指令碼之家。