gpt4 book ai didi

php - 5 次尝试登录页面

转载 作者:行者123 更新时间:2023-11-29 01:56:22 26 4
gpt4 key购买 nike

我正在创建一个 lgoin 超时。我的代码上的其他一切都运行良好。这是我的超时规范:

  • 如果用户在 24 小时内输入密码错误 5 次,则将其锁定 48 小时。
  • 如果用户在 5 次尝试和 24 小时内正确输入密码,则重新尝试。

我仍然需要它让用户超时 48 小时,并显示一条消息让用户知道他们已超时。如果你能帮我解决这个问题,我将不胜感激。这是代码片段:

这是登录尝试的代码片段:

        if (!$pw_ok)    {
if (isset($_SERVER["REMOTE_ADDR"])) {
$str_RemoteHost = $_SERVER["REMOTE_ADDR"];
} else {
$str_RemoteHost = '';
}

$qry_WriteToDatabase = " INSERT INTO cms_user_login_attempts
(
cula_user_id,
cula_date_time,
cula_remote_host,
cula_attempt_count
)
VALUES (
" . $db->SQLString($row->user_id) . ",
Now(),
" . $db->SQLString($str_RemoteHost, true) . ",
'cula_attempt_count'
)";
$db->query($qry_WriteToDatabase);

$qry_UpdateCount = " UPDATE
cms_user_login_attempts
SET
cula_attempt_count = cula_attempt_count + 1
WHERE
cula_user_id = " . $db->SQLString($row->user_id) . " ";
$db->query($qry_UpdateCount);



$qry_CheckDatabase = " SELECT
CASE WHEN count(*) >= 5 THEN 0 ELSE 1 END as allowed_login
FROM
cms_user_login_attempts
WHERE
cula_date_time >= DATE_SUB(CURRENT_TIMESTAMP, interval 48 hour)
AND
cula_user_id = " . $db->SQLString($row->user_id) . "";
$rs_CheckDatabase = $db->query($qry_CheckDatabase);

if (! (isset($qry_CheckDatabase) && $qry_CheckDatabase)) {
$errors->defineError("invalid_user_pass", "Bleh.", array("username","password"));
}



}

编辑:我已经更新了问题和代码。

最佳答案

您需要在密码验证之前保存登录尝试

if (! (isset($pw_ok) && $pw_ok))

因此,添加一个名为cula_login_success的 bool 字段来指示密码验证是否成功。

然后查询那个日期的失败次数,SQL应该是这样的:

$qry="select cula_user_id,count(*) from cms_user_login_attempts where DATEDIFF(cula_date_time,NOW())<=2 and cula_user_id=".$db->SQLString($row->user_id)+" and not exist(select cula_user_id from cms_user_login_attempts where  DATEDIFF(cula_date_time,NOW())<=2 and cula_user_id=".$db->SQLString($row->user_id)+" and cula_login_success=1) group by cula_user_id having count(*)>5";

此查询应返回一个空集,如果没有返回 - 那么这意味着您的用户在 2 天内尝试登录失败超过 5 次,并且中间没有成功登录

关于php - 5 次尝试登录页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27780213/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com