0

我有一个 time() 值保存在这样的变量中:

$latest_attempt = 1337980678;

我正在尝试计算一些延迟。

$remaining_delay = time() - $latest_attempt - $delay;

但是,$remaining_delay当我更新浏览器时,结果会增加,而不是反过来。

“您必须等待 95 秒才能进行下次登录尝试”

如果我在几秒钟后更新“您必须等待 102 秒才能尝试下次登录”

它正在做与它应该做的相反的事情,而是宁愿减少而不是增加。我做错了什么?我相信我需要对 latest_attempt 变量做一些事情,但我在 php 手册中找不到任何东西。

4

3 回答 3

4

我会说,是这样的:

$remaining_delay = $latest_attempt + $delay - time();
于 2012-05-25T21:22:54.797 回答
0
$time_since_last = time() - $last_attempt;

if ($time_since_last <= $delay) {
    $remaining = $delay - $time_since_last;
} else {
   ... good to go ... delay's expired
}
于 2012-05-25T21:25:19.227 回答
0

剩余延迟是阻塞到期的那一刻($last_attempt + $delay因为从 $last_attempt 开始,用户被阻塞了一段时间 $delay)与当前时间(time())之间的差 - 因此正确的公式是:

$remaining_delay = ($latest_attempt + $delay) - time();

if ($remaining_delay > 0) {
    die('Access denied, you need to wait another '. $remaining_delay .' seconds');
}
于 2012-05-25T21:35:58.007 回答