php用戶登陸代碼(限制用戶錯誤登錄次數)
php教程用戶登陸代碼(限制用戶錯誤登錄次數)
session_start();
include("mysql教程.class.php");
$db=new mysql('localhost', 'root', '', 'flx', 'conn', 'gbk');
// 為方便測試,這裡只是簡單定義了一個特定的用戶,在實際操作中,用戶信息從數據庫教程中得出;
define('user','admin');
define('pw', 123);
$db->findall('limit_login');
$row=$db->fetch_array();
//print_r($row);
if($_post['submit']){
$username=$_post["username"];
$pw=$_post["pw"];
$_session['time']=time();
/* 錯誤次數超限判斷*/
// 對於登陸出錯超過三次的用戶,如果現在時間,減去開始登陸的時間,小於特定的值時,就不允
許在登陸;
if($username==user){
//這裡用戶可以試著登陸3次,,下面寫為2,是因為頁面刷新與數據庫的連接不同步,
// 就是說,第二次的錯誤信息插入數據庫時,這裡獲取的信息,還是第一次的,實際用戶出錯的
次數已經多一次了;
if($row['login_times']>2){
$current=time();
$passed_time=$current-$row['login_date'];
echo '現在已經過了'.$passed_time.'秒<br>';
// 設定時間 900秒,在此時間段內,特定用戶不能登陸系統;按
if(($current-$row['login_date'])<900){
//$test_pw=substr(md5(rand()),0,10);
//現在admin (特定用戶)用戶已經登陸錯誤大於3次,那在限定的時間內,
//即使他的密碼輸入正確,也不能在登陸系統;
if($pw==pw){
exit('你密碼輸入錯誤次數大於三次,請在15分鐘後登陸系統!');
}
// 當然,這位用戶輸入的密碼不是正確的密碼,也給出這樣的提示;
if($pw!=pw){
exit('你密碼輸入錯誤次數大於三次,請在15分鐘後登陸系統!');
}
}else{
//此時已經過了限制的時間,這位用戶可以登陸了,在此用戶在登陸之前,要把前次登陸的時間
清零;
$mod_content="`login_times`=0,`login_date`=0";
$condition="`id`=1";
$db->update('limit_login',$mod_content,$condition);
}
}
}
/* 用戶登陸操作*/
if($username&&$pw){
if($username==user&&$pw==pw){
/* 用戶登陸成功,*/
// 更新數據表;表登陸次數和時間,都置零;
$mod_content="`login_times`=0,`login_date`=0";
$condition="`id`=1";
$db->update('limit_login',$mod_content,$condition);
echo '<script language="網頁特效" type="text/網頁特效">' .
'window.location="success.php"</script>';
}else{
//在第一次出錯時,設置密碼出錯次數為1,把登陸時是session 保存的時間放入數據庫;
if($row['login_times']==0&&$row['login_date']==0){
$mod_content="`login_times`=1,`login_date`='".$_session['time']."'";
$condition="`id`=1";
$db->update('limit_login',$mod_content,$condition);
}else{
$mod_content="`login_times`=`login_times`+1";
$condition="`id`=1";
$db->update('limit_login',$mod_content,$condition);
}
/* 提示用戶還有幾次機會*/
if($row['login_times']<3){
$row['login_times']++;// 這裡登陸次數加1,和上面的說的原因一樣,是因不能同步連接
數據庫所致;
echo'密碼錯誤!錯誤次數為:'.$row['login_times'].'次<br>';
$remain_times=3-$row['login_times'];
echo '你還有'.$remain_times.'登陸機會';
}
}
}else{
echo '用戶名和密碼不能為空!';
}
}
?>
<form action="" method="post" >
username:<input type="text" name="username" value="" maxlength="40"/><br>
password:<input type="password" name="pw" /><br>
<input type="submit" name="submit" value="login"/>
</form> 1 2