在我的代码中,我几乎使用
将令牌发送到数据库date('Y-m-d H:i:s');
功能。但我正在检查我发送的时间戳是否大于60秒,如果是这样我回应是,否则没有。我一直没有,我知道它超过一分钟,因为我的时间。我已经看过关于这个的帖子,但他们正在使用特定日期,我只是在用户提交表单并检查令牌是否为60秒时继续。这是我的代码
PHP
<?php
require_once('db_login.php');
$stmtToken = $handler->prepare("SELECT * FROM email_token");
$stmtToken->execute();
$rowToken = $stmtToken->fetch();
$date = $rowToken['time_stamp'];
if($date > time() + 60) {
echo 'yes';
} else {
echo 'no';
}
?>
答案 0 :(得分:2)
您还可以用不同的方式玩日期。这里的所有四行都是等效的:
$now = (new \DateTime(date('Y-m-d H:i:s')))->getTimestamp();
$now = (new \DateTime('now'))->getTimestamp();
$now = (new \DateTime())->getTimestamp();
$now = time();
然后你可以用这种方式进行比较:
$tokenExpirationTimestamp = (new \DateTime($date))
->modify('+60 seconds')
->getTimestamp();
$isTokenExpired = $tokenExpirationTimestamp < time();
if ($isTokenExpired) {
// ...
}