我目前有一个网站使用可以兑换的令牌,这些令牌在特定时间内有效。例如,我兑换了一个令牌,该令牌授予我24小时的访问权限。
现在,我想知道的是我如何才能最好地创建一个系统来检查令牌(令牌的时间)是否过期?
我想在每当有人兑换一个令牌然后制作一个PHP脚本定期检查是否已经过24,48小时后再将当前时间放在MySQL数据库中,然后从数据库中删除该令牌。
非常感谢任何想法或提示。
答案 0 :(得分:0)
如果令牌保持可用(例如通过会话),您可以在每个请求上重新验证/检查令牌。
SELECT * FROM `tokens`
WHERE `token` = 'yourtoken' AND `date_redeemed` >= NOW() - INTERVAL 1 DAY;
如果您没有收到任何结果,则令牌已过期。
如果令牌不适用于每个新请求,您自己的建议也可以。你可以用同样的方式做到这一点:
UPDATE `tokens`
SET `expired` = NOW()
WHERE `date_redeemed` >= NOW() - INTERVAL 1 DAY
您甚至可能每1或2小时运行一次,具体取决于有多少令牌。我会用cron
工作来做到这一点。
答案 1 :(得分:0)
将到期时间戳放在令牌本身中。根据您管理令牌的方式,您可能还需要加密一个覆盖随机和时间戳的加密校验和,以防止篡改。 E.g。
$token = $randString . $timestamp . $checksum;