程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php用戶登陸代碼(限制用戶錯誤登錄次數)(1/2)

php用戶登陸代碼(限制用戶錯誤登錄次數)(1/2)

編輯:關於PHP編程

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved