我遇到了一个奇怪的问题。
我想要一个简单的系统,如果一秒钟内有超过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点了)。
答案 0 :(得分:2)
您的第一个if
声明无效。
$time = $_SESSION['protect']['mass_request_time'];
if (!isset($time) || $time = null)
您的代码只是将时间设置为null
。请改用==
。