0

我遇到了一个奇怪的问题。

我想要一个简单的系统,如果一秒钟内有超过 1 个请求,它会显示错误。

我做了什么:

        if(!isset($_SESSION['protect']['mass_request_time']) || $_SESSION['protect']['mass_request_time'] = null) {
        $_SESSION['protect']['mass_request_time'] = microtime(true);
        $_SESSION['protect']['mass_request_request'] = 1;
    } else {
        $_SESSION['protect']['mass_request_request'] += 1;
        if($_SESSION['protect']['mass_request_request'] >= 2 && microtime(true) - $_SESSION['protect']['mass_request_time'] < 1) {
            die('Too many requests!');
        } elseif(microtime(true) - $_SESSION['protect']['mass_request_time'] > 1) {
            # Reset the counter since more than a second is over
            $_SESSION['protect']['mass_request_time'] = null;
        }

我不知道我做错了什么,我想解决方案很简单(也许只是一个计算错误......这里已经是凌晨 3 点了)。

4

1 回答 1

2

您的第一个if陈述无效。

$time = $_SESSION['protect']['mass_request_time'];
if (!isset($time) || $time = null)

您的代码只是将时间设置为null. 改为使用==

于 2013-10-18T00:54:08.317 回答