单击某些按钮后24小时内禁止访问者IP

时间:2019-07-20 09:20:13

标签: php html mysql

我知道这可以在mysql中完成,但我希望将IP存储在php或文本文件中,这对我来说有点困难,因为我不太了解。

$ SESSION用于记录日志,但是单击html按钮后24小时如何存储和禁止它。 非常感谢

1 个答案:

答案 0 :(得分:0)

类似的事情应该可以解决。

我们将访问者的IP和禁令到期的时间写入文本文件。然后,我们加载它并检查它们是否在该文件中,并且仍然被禁止。

function ban()
{
    $ip = $_SERVER['REMOTE_ADDR'];

    file_put_contents(
        'bans.txt',
        sprintf("%s;%s\n", $ip, (new DateTime())->add(new DateInterval('PT24H'))->getTimestamp()),
        FILE_APPEND | LOCK_EX);

}

function checkBan()
{
    $ip = $_SERVER['REMOTE_ADDR'];
    $bans = file('bans.txt');

    foreach ($bans as $ban) {
        $banExpiry = (int) explode(';', $ban)[1];

        if ($banExpiry < time()) {
            continue;
        }

        $bannedIp = explode(';', $ban)[0];

        if ($bannedIp === $ip) {
            return true;
        }
    }

    return false;
}