2017-10-20 157 views
0

我目前正在尝试创建一个“重置密码”令牌。当我的网站上的某个人想要重置其密码时生成的令牌。目前,一旦创建了令牌,我将它保存在我的数据库中。我想让令牌在数据库中存在只有24小时,然后自动删除自己,但我不知道如何做到这一点。任何帮助,将不胜感激。自动从Mysql数据库中删除

我通过创建一串随机字符来生成令牌非常简单。然后,我保存令牌和忘记密码的DB中的电子邮件如下

'INSERT INTO reset_token (token, email) VALUES ("'.token.'", "'.email.'")' 
+7

您可以添加'expiration_date'列。之后,令牌将自动失效(无人可以使用它),但仍然在表中。 – lad2025

+0

[PHP帮助带密码重置和令牌过期]的可能副本(https://stackoverflow.com/questions/3164978/ph​​p-help-with-password-reset-and-token-expiry) – Dezza

+0

创建事件 – Stivan

回答

1

当你说“自动删除”,你需要“自动删除”吧。

因此,在代码中的某处必须有执行此删除操作的查询。最重要的是,如果你需要删除过期的令牌,你需要知道它们是否过期。对于这个商店,timestamp以及令牌。

现在你把它放在哪里,取决于你想检查它是否需要删除。在这种情况下,您可以将它放在检查令牌是否有效的代码行之前。即如果你有一个功能validate_token可以看到该标记是否存在于数据库中并且是有效的,你可以将它放在该函数中。

function validate_token($token) { 
    $expiry = time() - 60*60*24; 
    // perform query to delete all tokens that have a timestamp less than $expiry 

    // Now run the query to check if the token exists in the database. 
    // You have only valid tokens left! 
}