0

1 時間後に有効期限が切れるボタンまたはリンクを作成しようとしています。

訪問者がページにアクセスした時間を Cookie で設定しています。

私が見たコード例のほとんどは、経過時間のみを示しており、残り時間は示していません。

例: リンクは 0 時間 30 分 34 秒で期限切れになります

これは大まかなコードです:

//Setting cookie example
setcookie('previous_time', time(), time()+3600*1);


$current_time = time();
$previous_time = $_COOKIE['previous_time'];

$time_diff = $current_time-$previous_time;

$time_diffタイムスタンプを「0時間30分34秒で期限切れ」のような形式に変換する方法がわかりません

どうもありがとう。

4

3 に答える 3

0

時間差をフォーマットするに$time_diffは、2 つの時間の間の秒数にすぎないため、計算を行うだけです。

$hours    = floor( $time_diff / 3600);
$minutes  = floor( ($time_diff / 60) % 60); 
$seconds  = $time_diff % 60;

echo "$hours hours, $minutes minutes, $seconds seconds\n";

したがって、 の値は次のように20712 なります。

5 hours, 45 minutes, 12 seconds 
于 2012-07-02T18:07:29.797 に答える
0

タイムスタンプを比較する式を使用すると、違いは秒単位です。

つまり、$time_diff / 60 で分が得られます。さらに 60 で割ると時間になります。等

于 2012-07-02T18:10:32.587 に答える
0

Cookie ベースは改ざん可能であるという nickb の意見に同意しますが、リンクの有効期限が切れる 1 時間前に最初の訪問をマークすると言っています。

// set when we are counting down to
setcookie('expires_at', time()+3600, time()+3600);

// we are counting down not up (for "expires in" not "valid since" logic)
$time_diff = $_COOKIE['expires_at'] - time();

$minutes = floor($time_diff / 60);
$seconds = floor($time_diff % 60);

// zero hours since the link will only be valid for one hour max
echo sprintf('expire in 0 hours, %d mins and %d seconds', $minutes, $seconds);

次に、次のことができます。

if($time_diff > 0){
    echo '<a href="...">...</a>';
}
于 2012-07-02T18:16:55.120 に答える