所以我试图检查重置链接是否过期。这就是我得到的东西
//Get token data
$stmt = $con->prepare("SELECT token_created_at from reset WHERE token = :urltoken");
$stmt->bindValue(':urltoken', htmlspecialchars($_GET['token'], ENT_QUOTES, 'UTF-8'));
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_ASSOC);
while($row = $stmt->fetch()) {
$token_created_at = $row['token_created_at'];
}
$token_created_at;
//Return current time to match
$current_time = new DateTime();
$my_dt = DateTime::createFromFormat('m-d-Y H:i:s', $token_created_at);
//Modify error
$expires_at = $my_dt->modify('+1 hour');
我如何设置用户要求重置的日期
//Get creation time
$time_gen = date('m-d-Y H:i:s', time());
现在发生的事情是我
致命错误:在第26行的/Users/MATT/Desktop/Learn/forgot/activate.php中调用非对象的成员函数modify()
第26行
$expires_at = $my_dt->modify('+1 hour');
有什么想法吗?我已尝试过其他帖子,但他们似乎并不适用于我的问题。它们还存储为VARCHAR
答案 0 :(得分:4)
根据PHP docs:
DateTime :: createFromFormat返回值
失败时返回新的
DateTime
实例或FALSE
。
因此,$my_dt
变量非常可能FALSE
,这肯定会导致错误。
如果您使用的是标准的MySQL 'Y-m-d H:i:s'
类型,那么您的时间格式字符串可能需要为DATETIME
。