PHP,限制用户输入不正确的值x时间

时间:2018-06-28 07:48:09

标签: php mysql

我正在尝试限制用户输入的密码,当用户忘记密码时,该密码输入错误。我正在做一个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();
			}
		}
?>

如果第五次密码不正确,则用户应收到第二条消息you have entered invalid code 5 times, please request a new code.。有人可以帮我吗?

3 个答案:

答案 0 :(得分:1)

在会话中存储此类信息。

定义阈值,然后继续存储尝试

 if(FAILED_LOGIN_CASE)///  {


   if($_SESSION['failedAttempts']== Threshold) {
        ///attempts exceeded
   }
   else{
    $_SESSION['failedAttempts']= $_SESSION['failedAttempts'] + 1;
   }
 }
 else{
  //login 
   $_SESSION['failedAttempts']=0;
 }

如果成功登录,请将会话设置为0。

答案 1 :(得分:0)

您可以使用 Session 并在每次用户输入无效信息集counter ++之后将计数器保存为无效计数,最后将其提交给Session。 最后进行检查控制

if(Session['YOUR_SESSION'] == 5)
// your code place here

答案 2 :(得分:0)

在if语句中,您正在测试$ count == 5。

else if($code != str_replace($unnecessary2, "", $validcode) && $count == 5)

因为for循环在$ count <5处停止,所以count永远不会取值为5。

for($count=0;$count<5;$count++)