我有一个这样的登录表单:
<form action="form.php" method="post">
<input type="text" name="name" placeholder="Type your name">
<input type="password" name="password" placeholder="Type your password" >
<input type="submit" name="submit" value="Login">
</form>
我只想在用户尝试登录超过3次时添加google recaptcha,例如:
<form action="form.php" method="post">
<input type="text" name="name" placeholder="Type your name">
<input type="password" name="password" placeholder="Type your password" >
<?php
if(){ // Check if submitted more than 3 times.
<div class="g-recaptcha" data-sitekey="=== Your site key ==="></div>
}
?>
<input type="submit" name="submit" value="Login">
</form>
我正在考虑使用cookie,在验证和登录失败后添加一个值为1的cookie,如果这个cookie存在,则增加1。
if( isset($_COOKIE['tries']) ){
createcookie('tries', $_COOKIE['ties'] +1 );
}else{
createcookie('tries', '1');
}
但是如果饼干被禁用了怎么办?!
另外,我正在考虑使用ip地址,创建一个表,其中包含尝试登录但登录失败的用户的ip地址:
__________________________________
| | | |
| ip | count | date |
|________|__________|_____________|
其中count是登录失败次数,date是today日期,因此如果是today日期并且count>3,则显示recaptcha。
但是如果用户使用的是vpn呢?
有可靠的方法吗?
stackoverflow是怎么做到的?
2条答案
按热度按时间nue99wik1#
会议怎么样?
每次处理登录时,在会话中增加一个变量。然后检查会话变量,如果它大于3,则显示recaptcha。
67up9zun2#
如果没有客户端cookies,您将需要一个带有
ip
,last-attempt
以及attempts
.如果
last-attempt
已超过5分钟,尝试重置为0。套
last-attempt
以及attempts+1
如果尝试次数大于3,则显示验证码除非你在公司防火墙后面有很多用户,否则上面的方法应该有效。你也可以使用cookies,如果客户端将他们与会话等。