错误的计算

时间:2013-10-18 00:51:15

标签: php math

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

我想要一个简单的系统,如果一秒钟内有超过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点了)。

1 个答案:

答案 0 :(得分:2)

您的第一个if声明无效。

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

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