3

我正在尝试学习如何创建和测试时间戳的到期。我设置了一个简单的示例,尝试测试已过期的时间戳,但它似乎无法正常工作,我想知道是否有人可以帮助我弄清楚为什么它不会回显“有效”和“过期”在适当的时候?

<?php

echo'
<html>
<head>
</head>
<body>';

//set static current time
$timestamp = 1340037073;

if($timestamp <= strtotime("+10 minutes", $timestamp)){
    echo "Valid";
}else{
    echo "Expired";
}


echo'
</body>
</html>';




?>
4

3 回答 3

3

当前时间是通过time()函数获取的,因此$timestamp应该包含从外部源(如数据库或其他)获取的时间,以检查当前时间是否已过期:

//test timestamp
$timestamp = 1340037073;

//check if it has expired (600 = 60*10 seconds = 10 minutes)
if ((time() - $timestamp) < 600)
{
  echo 'valid';
}
else
{
  echo 'expired';
}

希望对你有帮助 :)

于 2012-06-18T16:52:14.340 回答
1

你所拥有的永远是有效的。考虑一下:

$i = 0;

if ($i <= ($i+1)) {
  // always truthy, because 1 is greater than 0
}

所以你应该切换它:

$timestamp = 1340037073;

if(strtotime("+10 minutes", $timestamp) <= $timestamp){
    echo "Valid";
} else {
    echo "Expired";
}

另外:为什么不开始使用DateTime呢?

于 2012-06-18T16:51:13.577 回答
1

更简单:(600 = 10 分钟,以秒为单位)

if (($timestamp+600) <= time()) {
    //expired
}
于 2020-02-05T11:48:56.407 回答