MySQL NOW()与PHP时区不匹配

问题描述 投票:0回答:2

我制作了一个电子邮件验证链接,该链接仅在发送邮件后的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分钟内有效,但是下面给出的代码无效。等等,我在...

php mysql time pdo
2个回答
0
投票

看起来您有不同的Apache(或任何您正在运行的)和MySQL时区。编写一个简短的脚本,更改PHP时区,打印DateTime值,然后使用NOW()将行插入MySQL,并检查MySQL和打印的时间是否不同。


0
投票

这似乎与时区差异有关,您应该能够更改PHPMySQL的设置,例如基于another answer,您可以像下面这样配置PHP:

© www.soinside.com 2019 - 2024. All rights reserved.