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 に答える