現在、ユーザーのログイン試行回数を更新するlogin_countという名前のフィールドがあります。そのデータを取得して、ユーザーが数分間待ってから再度ログインできるようにするには、if elseステートメントをどのように作成しますか?ユーザーは3回のログイン試行後に数分待つ必要があります
function login_check(){
if($_SERVER['REQUEST_METHOD']=='POST'){
include "config.php";
$conn = mysqli_connect($host,$user,$pass,$db);
if(mysqli_connect_errno($conn)){
echo "Error in DB";
}else{
// echo "OK";
}
$sql="SELECT * FROM login_details
WHERE username='".$_POST['username']."' AND
password='".md5($_POST['password'])."'";
//execute the query
$result= mysqli_query($conn,$sql);
//display result
if (mysqli_num_rows($result)>0){
//username and password are correct
$username= $_POST['username'];
$_SESSION['username']= $username;
$qry = "UPDATE login_details SET login_count = 0 WHERE username = '".$_POST['username']."'";
$rslt = mysqli_query($conn,$qry);
header("Location: accessnow.php?action=loggedin&username=$username");
}
else{
//username and password are wrong
// on failed login attempt:
$query1 = "UPDATE login_details SET login_count = login_count + 1 WHERE username = '".$_POST['username']."'";
$res = mysqli_query($conn,$query1);
$query2 = "SELECT login_count WHERE username = '".$_POST['username']."'";
$query2_result = mysqli_query($conn,$query2);
if($query2_result >= 3)
{
// SHOULD SHOW AN ALERT
echo '<script> alert("You have 3 login attempts")</script>';
}
echo '<script> alert("Username and Password did NOT match")</script>';
}
}
else{
//DISPLAY THE LOGIN FORM
}
}
ログインの試行回数とループ内に条件を追加します。「sleep(time_in_seconds);」を使用して分の遅延を追加します。 –
これをチェックしてください - http://stackoverflow.com/questions/679756/limiting-user-login-attempts -in-php ---------- http://stackoverflow.com/questions/14035845/how-to-blocked-login-a-few-minutes-after-3-unsuccessful-login --- --------- http://webcheatsheet.com/php/blocking_system_access.php –
準備文を使用するようにクエリを変更してください。あなたのクエリが今構築されている方法により、誰でもSQLインジェクションを通じてパスワードなしでアクセスすることができます。 – Gordon