2016-12-04 322 views
0

如何限制失敗登錄與此腳本?如果登錄失敗,我將它插入到sql中。 (這是正確的方式?)登錄嘗試的PHP登錄腳本

但是我如何檢查下一次登錄,用戶現在可以登錄?我會在1小時內登錄限制。

Aniway,這段代碼對那有好處嗎?

<?php 
$loginError = array(); 
if(isset($_POST['login_submit'])) 
{ 
    if(empty($_POST['email']) or !isset($_POST['email'])){$loginError[] = "Hiányzó email cím.";} 
    if(empty($_POST['pass']) or !isset($_POST['pass'])){$loginError[] = "Hiányzó jelszó.";} 
    if(strlen($_POST['email']) > 50){$loginError[] = "Hibás adat az email mezőben.";} 
    if(strlen($_POST['pass']) > 40){$loginError[] = "Hibás adat a jelszó mezőben.";} 
    if(count($loginError) == 0) 
    { 
     $email = mysqli_real_escape_string($kapcs,$_POST['email']); 
     $pass = sha1($_POST['pass']); 
     $lekerdezes = mysqli_query($kapcs, "SELECT * FROM admin_user WHERE email = '$email'") or die(mysqli_error($kapcs)); 
     if(mysqli_num_rows($lekerdezes) > 0) 
     { 
      $adat = mysqli_fetch_assoc($lekerdezes); 
      if($adat['status'] == 1) 
      { 
       if($adat['pass'] == $pass) 
       { 
        $_SESSION['adatok'] = $adat; 
        $_SESSION['email'] = $adat['email']; 
        $_SESSION['userid'] = $adat['id']; 
        header("Location:home.php"); 
       } 
       else 
       { 
        $sql = "INSERT INTO loginattempts(log_address, log_datetime) VALUES ('".$_SERVER['REMOTE_ADDR']."', NOW())"; 
        $insert_login_attempt = mysqli_query($kapcs, $sql) or die(mysqli_error($kapcs)); 

        $loginError[] = "Hibás email cím vagy jelszó."; 
       } 
      } 
      else 
      { 
       $sql = "INSERT INTO loginattempts(log_address, log_datetime) VALUES ('".$_SERVER['REMOTE_ADDR']."', NOW())"; 
       $insert_login_attempt = mysqli_query($kapcs, $sql) or die(mysqli_error($kapcs)); 

       $loginError[] = "Még nincs aktiválva a fiók."; 
      } 
     } 
     else 
     { 
      $sql = "INSERT INTO loginattempts(log_address, log_datetime) VALUES ('".$_SERVER['REMOTE_ADDR']."', NOW())"; 
      $insert_login_attempt = mysqli_query($kapcs, $sql) or die(mysqli_error($kapcs)); 

      $loginError[] = "Hibás email cím vagy jelszó."; 
     } 
    } 
} 
?> 

回答

0

我將在數據庫中調用狀態(阻塞/ OK),並假定你已得到了最後一次登錄的一個時間戳字段創建一個字段...

然後標識連接到數據庫的情況下登錄失敗並保存壓縮狀態和時間戳。下一次嘗試,你會檢查time.now與上次訪問...

我很好的建議是創建一個數據庫連接函數,所以你可以調用它幾次而不重複代碼,也不要忘記使用嘗試/除了數據庫連接。