-2

重複の可能性:
PHP でのユーザー ログイン試行の制限

ログインに3回失敗した後、ユーザーアクセスをブロックするために、ログインにセキュリティを設定しようとしています。たとえば、特定のユーザーが間違ったユーザー名またはパスワードで 3 回ログインしようとした場合、ユーザーが 10 分後に再試行する必要があるというダイアログまたはメッセージを表示する必要があります (例として)。

10 分後、ユーザーは正しいユーザー名とパスワードで再度ログインできます。

それ、どうやったら出来るの?

4

3 に答える 3

1

最も簡単な方法は、SESSION を使用してログインに失敗した回数を保存することです。ユーザー ログインが間違ったユーザー名またはパスワードを使用するたびに、カウントを増やします。そのように:

if(isset($_SESSION['num_login_fail']))
{
  if($_SESSION['num_login_fail'] == 3)
   {
     if(time() - $_SESSION['last_login_time'] < 10*60*60 ) 
      {
         // alert to user wait for 10 minutes afer
          return; 
      }
      else
      {
        //after 10 minutes
         $_SESSION['num_login_fail'] = 0;
      }
   }      
}

$sucess = doLogin() // your check login function
if($success)
{
   $_SESSION['num_login_fail'] = 0;
   //your code here
}
else
{
 $_SESSION['num_login_fail'] ++;
 $_SESSION['last_login_time'] = time();
}

ただし、ユーザーはブラウザをオフにしてから再度開くことでバイパスできます。すべてのユーザーのセッションは null になります。より完璧にするために、データベースに num_login_fail と last_login_time を保存できます。

于 2012-12-26T04:08:46.237 に答える
0

var を使用して$_SESSION、試行回数と試行回数を保存できます。これは、ユーザーがまだ同じセッションを持っている場合 (たとえば、ブラウザーを閉じていない場合) にのみ機能します。永続化する場合は、Cookie を使用します。ユーザーがこれを回避できないようにする場合は、IP の db 値を使用しますが、NAT などの場合は問題になります。$_SESSIONvarでログに記録された 3 回の試行が失敗した後、IP をブロックすることができます。

于 2012-12-26T04:00:26.570 に答える
0

私の意見では、Cookie またはセッションでも問題を解決できますが、私の意見では、これらの方法は完全ではありません。特に安全性に重点を置いている場合はそうです。ユーザーが Cookie を消去するとどうなりますか?

于 2012-12-26T04:12:55.907 に答える