PHP检查登录尝试30分钟

时间:2014-10-11 13:13:56

标签: php mysql

我插入日期(最后一次尝试),尝试使用计数器和ip进入mysql数据库,以便在我的登录页面中控制登录尝试,如下所示:

| id  |      ip       |   date     | attempts |
|  1  |  192.168.1.2  | 1412932824 |     5    |

现在在登录页面中,如果用户尝试= 5,我需要删除表单30分钟。

mycode的:

$checkip = Access::FETCH("SELECT * FROM " . LOGIN_ATTEMPTS . "
                   WHERE
      ip = ? AND panel = ? ", _IS_GET_IP_ADDRESS_() , '1');

if (count($checkip > 0))
    {
    $time = new DateTime();
    $time->setTimestamp($checkip[0]['date']);
    $time->modify('+30 minutes');
    $timeattempts = $time->format('U');
    if ($checkip[0]['attempts'] <= 5 && $timeattempts < time())
        {
        // FORM SHOW
        }
    else
        {
        // SHOW ONLY ERROR
        }
    }

但是这段代码对我和$timestamp > time().

都不合适

如何修复我的代码以防止登录尝试?

注意:在行动中我更新日期(最后一次尝试)并尝试每次登录尝试。

1 个答案:

答案 0 :(得分:2)

您只能在查询中执行此操作:

$timestamp = strtotime("-30 minutes");
$checkip = Access::FETCH("SELECT * FROM " . LOGIN_ATTEMPTS . "
                          WHERE
                          ip = ? AND panel = ? AND attempts >= ? AND date <= ? ",
                          _IS_GET_IP_ADDRESS_() , '1', 5, $timestamp);

if (empty($checkip))
{
    // FORM SHOW
}
else
{
    // SHOW ONLY ERROR
}

基本上,您搜索5个或更多的尝试,时间戳不超过30分钟。 如果找到了,那么您不想显示登录表单。