gpt4 book ai didi

php - MySQL如何让值过期?

转载 作者:行者123 更新时间:2023-11-29 04:40:51 27 4
gpt4 key购买 nike

所以我目前正在为网站设计忘记密码功能。基本上,当用户点击忘记密码时,它会向他们发送一封带有重置 token 的电子邮件。我希望重置 token 在 48 小时后过期(出于安全原因)。我将如何在 MySQL 和 PHP 中执行此操作。我的表中有一个名为 resetkey 的列,当 48 小时结束时,我希望系统清除与用户用户名关联的 resetkey/ token 。

谢谢!

最佳答案

在您的 resetkey 列旁边放置一个 DATETIME 列,名称可能是 expires

然后,每当您插入一个新的重置键时,也会在过期中插入一个值:

INSERT INTO forgot (resetkey, expires) VALUES (whatever, NOW() + INTERVAL 48 HOUR)

在您从表中读取任何重置键之前,请执行以下操作:

DELETE FROM forgot WHERE expires < NOW()

那么您将永远不会看到过期的 key ;如果它们过期,它们总会被消灭。

现在,您可以选择查找用户提供的重置 key 来执行某些操作。如果它已过期,您可以向用户宣布:“您的重置 key 已过期。”但这是一个坏主意……为了安全起见,您不应该帮助用户理解为什么像重置 key 这样的安全 token 是无效的。你应该只说“那个重置键不正确。”

这是否会留下一些包含过期 token 的行将保留在表中的可能性?是的。但是,如果您在使用任何 token 之前遵循清除过期 token 的程序,您的应用程序将无法实际读取和使用它们。如果您有理由避免在表中保留过期的 token ,即使它们毫无用处,您可以设置一个 EVENT 或其他类型的定期计划作业来运行我提到的 DELETE 语句。

关于php - MySQL如何让值过期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29220334/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com