2016-12-04 7 views
0

このスクリプトで失敗したログインを制限するにはどうすればよいですか?ログインに失敗した場合は、SQLに挿入します。 (それは正しい方法ですか?)ログイン試行を含むPHPログインスクリプト

しかし、次のログイン時にユーザーがログインできるようにするにはどうすればいいですか?私は1時間でログイン制限を取るだろう。

アニウェイ、これはいいですか?

<?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 /ブロック)と呼ばれるデータベース内のフィールドを作成し、ホードは、最後のログイン用のフィールドのタイムスタンプを得たと仮定します...

その後Idは、ログインする場合には、データベースへの接続失敗し、bloquedのステータスとタイムスタンプを保存します。次の試みは、あなたがtime.now対最後のアクセスをチェックするだろう...

私は良い提案は、データベース接続のための関数を作成するので、コードを繰り返すことなくそれを呼び出すことができる、また使用を忘れないでくださいtry/exceptはdb接続を示します。

関連する問題