php - 如果超过 3 个错误提交,显示验证码

标签 php captcha

在我的站点的登录页面中,用户必须正确输入用户名、密码和验证码才能进入用户区。但是没有人,首先是我,不喜欢验证码。另一方面,您知道,网络安全和垃圾邮件事实。

所以在第一次、第二次和第三次我不想显示验证码,但超过 3 个错误的提交我想显示它。但是我不知道如何实现这个!我试过了

$_SESSION['wrong_submit'] = 1; 
$_SESSION['wrong_submit']++;

当然不是。请你能帮帮我,我该怎么做?

最佳答案

在您的用户表中创建一个名为 login_attempts 的列。该列在每次登录尝试失败时递增,并在成功登录时重置。

基本结构如下:

+-----------+------+------+
|  user_id  |  ip  | date |
+-----------+------+------+

要检查登录尝试次数,您可以使用如下查询:

SELECT count(ip) AS failed_attempts
FROM login_attempts
WHERE ip = $ip
  AND date < (NOW - INTERVAL 24 HOUR)

现在,在您的 PHP 代码中,您可以检查该值是否大于或等于 3,如果是,则显示验证码:

if ($data['failed_attempts'] >= 3) {
    // display captcha...
}

关于php - 如果超过 3 个错误提交,显示验证码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21795193/

相关文章:

php - Yii Captcha 小部件中的日语字符?

python - 如何使用 AntiCaptcha 解决 FunCaptcha/RotateCaptcha?

php - 在 PHP 中等待数据库更新最便宜的方法是什么?

php - 当我商店的商品为 "purchased"时尝试更新单个商品的数量,但我表中的每个商品都已更新。为什么?

javascript - 无需外部 API 调用的验证码

asp.net - 这是什么编码,以及如何解码它?

javascript - JS 仅在点击时加载图像

javascript - 如何将json数据插入到表中?

javascript - AJAX发送和接收不同的数据类型

php - ORM 关系、PHP 和 SQL 连接