PHP倒计时到期按钮或链接

时间:2012-07-02 17:59:19

标签: php time hyperlink

我正在尝试创建一个会在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秒”过期的格式

非常感谢。

3 个答案:

答案 0 :(得分:0)

要格式化你的时差,只需做一些数学计算,因为你的$time_diff只是两次之间的秒数:

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

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

因此,值20712 would produce

5 hours, 45 minutes, 12 seconds 

答案 1 :(得分:0)

使用比较时间戳的公式,差异以秒为单位。

所以,$ time_diff / 60可以让你分钟;再分60来得到几小时;等

答案 2 :(得分:0)

我同意基于cookie的昵称是可以篡改的,但是当你说这个链接过期时,你会提前一小时标记第一次访问:

// 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>';
}