2016-12-04 321 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与上次访问...

我很好的建议是创建一个数据库连接函数,所以你可以调用它几次而不重复代码,也不要忘记使用尝试/除了数据库连接。