从数据库

时间:2018-03-27 09:50:26

标签: php sql date

我正在为PHP中的一个小项目编写令牌认证系统。向脚本发出请求,然后脚本生成令牌并将其存储到当前时间为+2分钟的到期日期的数据库中。

然后有另一个脚本在其请求中获取令牌,检查它是否有效且令牌是否已过期。这是我陷入困境的地方。我无法成功地比较两个日期,即使条件应该是真的,但事实并非如此。

以下是我将时间插入数据库的方法;

// Now, we want to gen the token.
$token = randomKey(20);

// Current time + 2 minutes
$time = date("m/d/Y h:i:sa", time() + 120);

// Insert the token into the DB
$obj->query("INSERT INTO `tokens`(`username`, `token`, `expiry`) VALUES ('$uid', '$token', '$time')");

以下是我尝试比较它们的方法;

if(strtotime($row['expiry']) < strtotime(date("m/d/Y h:i:sa")))

无论如何,即使将db中的时间更改为过去的某一天,此条件也始终为false。

1 个答案:

答案 0 :(得分:2)

它的错误,因为它的数字格式不正确。

尝试做回音日期(“m / d / Y h:i”,日期(“m / d / Y h:i:sa”,时间());

您将收到错误。

为什么不使用unix时间戳来插入数据库并稍后读取?这么容易。

$time = date("U") + 120;

// Do DB insert....

if($row['expiry'] < date("U")){
    // Do something...
}