2017-10-20 192 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! 
}