使用PHP& MySQL的

时间:2015-06-28 16:53:37

标签: php mysql

我目前有一个网站使用可以兑换的令牌,这些令牌在特定时间内有效。例如,我兑换了一个令牌,该令牌授予我24小时的访问权限。

现在,我想知道的是我如何才能最好地创建一个系统来检查令牌(令牌的时间)是否过期?

我想在每当有人兑换一个令牌然后制作一个PHP脚本定期检查是否已经过24,48小时后再将当前时间放在MySQL数据库中,然后从数据库中删除该令牌。

非常感谢任何想法或提示。

2 个答案:

答案 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;