Я пытаюсь ограничить ввод пользователя для кода, который пользователь вводит неправильно, когда пользователь забыл свой пароль. Я делаю цикл for и внутри цикла даю оператор if. Код отправляется на их электронную почту, и им необходимо ввести код, прежде чем они смогут изменить пароль. Похоже, мой код ошибочен.
<?php
for($count=0;$count<5;$count++)
{
if($code != str_replace($unnecessary2, "", $validcode) && $count < 5)
{
http_response_code(406);
echo '[{"message":"code is invalid!"}]';
$count = $count+1;
die();
}
else if($code != str_replace($unnecessary2, "", $validcode) && $count == 5)
{
$deletedata="delete from personal_password_reset where email='".$dt[0]["email"]."'";
run_sql($deletedata);
http_response_code(406);
echo '[{"message":"you have entered invalid code 5 times, please request a new code."}]';
die();
}
else
{
http_response_code(200);
echo '[{"message":"code is valid!"}]';
die();
}
}
?>
Когда код является неправильным в течение 5-го раза, пользователь должен получить второе сообщение, которое you have entered invalid code 5 times, please request a new code.
, Кто-нибудь может мне помочь?
Храните эту информацию в сеансе.
Определите порог, а затем сохраните попытки
if(FAILED_LOGIN_CASE)/// {
if($_SESSION['failedAttempts']== Threshold) {
///attempts exceeded
}
else{
$_SESSION['failedAttempts']= $_SESSION['failedAttempts'] + 1;
}
}
else{
//login
$_SESSION['failedAttempts']=0;
}
В случае успешного входа в систему установите для сеанса значение 0.
В вашем операторе if вы проверяете значение $ count == 5.
else if($code != str_replace($unnecessary2, "", $validcode) && $count == 5)
Граф никогда не примет значение 5, поскольку цикл for останавливается на $ count <5.
for($count=0;$count<5;$count++)
Вы можете использовать сеанс и сохранять счетчик для недопустимых подсчетов после того, как каждый раз, когда пользователь вводит неверный набор данных counter++ и, наконец, фиксирует это на сеансе. Наконец, для контроля, который проверяет
if(Session['YOUR_SESSION'] == 5)
// your code place here
die()
в каждой опции.