我制作了一个电子邮件验证链接,该链接仅在发送邮件后的10分钟内有效,但下面给出的代码无效。
[等待,我显示了StackOverflow和offcourse上的所有相关线程,我得到了相同的问题相关帖子,但我也做了结果答案,但对我不起作用,因此我发布了这个问题,可能有人遇到了相同的问题,并且会帮助别人。
请不要将其标记为重复并且在审阅模式下,请尝试理解我的查询。
请帮助我解决此问题以及正确的代码。 :(
我的代码在下面-->>
其他代码
date_default_timezone_set('Asia/Kolkata'); tokenExpire formats: (new DateTime('+10 minutes'))->format('Y-m-d H:i:s')
数据库结构[名称为注册名称]
----------------------------------------------------- Email | token | tokenExpire | ---------------------------------------------------- [email protected] | {randNum} | 2019-10-19 09:42:10 | -----------------------------------------------------
PDO语句
$sql = $con->prepare("SELECT `Email`,`token` FROM `signup` WHERE Email= :1 AND token= :2 AND tokenExpire > NOW()"); $sql->execute(array( ':1' => $emailid, ':2' => $tokenum )); if ($sql->rowCount() > 0) { echo "Link Is Valid"; } else { echo "Link Expired"; }
我希望它必须显示时间过期或代表我的代码的有效信息,但它不起作用,并且即使时间已经过去也显示链接有效。
我创建了一个电子邮件验证链接,该链接仅在发送邮件后的10分钟内有效,但是下面给出的代码无效。等等,我在...
看起来您有不同的Apache(或任何您正在运行的)和MySQL时区。编写一个简短的脚本,更改PHP时区,打印DateTime值,然后使用NOW()将行插入MySQL,并检查MySQL和打印的时间是否不同。
这似乎与时区差异有关,您应该能够更改PHP
和MySQL
的设置,例如基于another answer,您可以像下面这样配置PHP: