如果用户尝试多次登录,如何触发?

jdgnovmf  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(262)

我有一个这样的登录表单:

<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是怎么做到的?

nue99wik

nue99wik1#

会议怎么样?
每次处理登录时,在会话中增加一个变量。然后检查会话变量,如果它大于3,则显示recaptcha。

session_start();
$_SESSION["logins"]++;

---

if($_SESSION["logins"] >= 3)...
67up9zun

67up9zun2#

如果没有客户端cookies,您将需要一个带有 ip , last-attempt 以及 attempts .
如果 last-attempt 已超过5分钟,尝试重置为0。
last-attempt 以及 attempts+1 如果尝试次数大于3,则显示验证码
除非你在公司防火墙后面有很多用户,否则上面的方法应该有效。你也可以使用cookies,如果客户端将他们与会话等。

相关问题