2016-11-02 63 views
-3

如何在3次登錄嘗試後阻止用戶?如何在3次登錄嘗試後阻止用戶?

這裏是我的代碼:

session_start(); 

     /************Connexion************/ 

    if(isset($_POST['cnx'])){ 
    require_once('../config.php'); 
    $db = new DBSTOCK(); 
    $cnx = $db->connect(); 
    $user=$_POST['user']; 
    $pass=$_POST['pass']; 
    // To protect MySQL injection for Security purpose 
    $user = strip_tags($user); 
    $pass = strip_tags($pass); 

    $user = stripslashes($user); 
    $pass = stripslashes($pass); 

    $user = mysqli_real_escape_string($cnx,$user); 
    $pass = mysqli_real_escape_string($cnx,$pass); 

    $q=mysqli_query($cnx,"select * from admin where user='".$user."'"); 

    $row = mysqli_fetch_array($q); //or die(mysqli_error($con)); 
    $pw = $row['pass'];//hashed password in database 
    $username = $row['user']; 


    if($user==$username && password_verify($pass, $pw)) { 
    $_SESSION["user"]=$user; 
    header("Location: ../view/accueil.php"); 
    } 
    else{ 
    header("Location: ../index.php?failed=0"); 
    }} 


     /************Deconnexion************/ 

     if(isset($_GET['decnx'])){ 

     session_destroy(); 
     session_unset(); 

     header("Location: ../index.php"); 
    } 

任何腳本的建議,我可以添加到我的代碼,以便用戶可以阻斷10分鐘後連續3次失敗的登錄嘗試?

+2

請看看[這裏](http://stackoverflow.com/questions/30770438/blocked-the-user-after-3-attempts-in-php)和[here](http:// stackoverflow。 com/questions/14035845/how-to-blocked-login-a-minutes-after-3-successful-login) – crowchirp

回答

4

以下兩列添加到您的行:

  • last_attempt爲datetime
  • attempt_count爲int

在你登錄邏輯,檢查這兩個值,如果是3或更多和在時間範圍內(例如:10分鐘),然後更新last_attempt並遞增attempt_count,第二部分不是必需的,但您可能想知道這一點。如果超過10分鐘,則將其設置爲0,否則將其重新更新爲last_attempt。

作爲獎勵,您現在也知道用戶上次登錄的時間,當您想要查找未使用的帳戶時這很有用。

+0

您能否舉個例子 –

+1

@baktetemiloud我剛纔明確解釋了該怎麼做,我不是要爲你做你的工作,如果你不能把概念轉化爲代碼,你永遠不會學習。 – TravisO

+0

昨晚我正在研究這個解決方案,比餅乾更好謝謝 –

0

有很多方法可以做到這一點。如果你想阻止設備,那麼你可以創建一個cookie 10分鐘,並設置一個條件,如果用戶名匹配,那麼它不會擊中數據庫登錄。

或者,如果你想阻止任何設備用戶,那麼你必須保持用戶狀態,連續三次失敗嘗試將改變用戶狀態和被阻止的時間。但是這次你要檢查阻塞的時間是否在10分鐘之前,或者不是每次登錄嘗試。

+0

你會更好地使用服務器端鎖定,而不是客戶端(帶有cookie),因爲cookie可以由用戶修改。 TravisO的回答非常簡單,可以說更安全。 :) – XtraSimplicity

相關問題