我想创建一个功能,允许我禁止一个帐户 10 天。
在 dbc 中,我有一个名为“ban”的字段和 1=notban, 0=ban 的 bool 值。我还有一个名为“date_banned”的字段,它只是用户被禁止的时间戳。
我的问题是如何创建从用户被禁止之日起 10 天的时间范围?
例如:詹姆斯在“2010-05-03 20:43:48”上被禁赛。那么我怎样才能在时间戳中添加 10 天呢?并且在 10 天后,它会将“禁令”设置为等于 1(未禁止)。
编辑: 如何显示用户还剩多少天的禁令?例如:距离取消禁令还有 8 天
我可以……现在做()-$date_banned吗?或者如何从当前日期中减去禁令日期?
最佳答案
要将 10 天添加到 MySQL 中的 date_banned
字段,您可以简单地使用 DATE_ADD()
函数。您可以在用户尝试登录时进行以下检查,以查看禁令是否已过期:
... WHERE NOW() > DATE_ADD(date_banned, INTERVAL 10 DAY);
然后,您可能希望在用户尝试登录时切换
ban
字段。否则,您可以每天或以任何其他速率运行计划作业,以检查过期禁令并相应地更新此字段。但是,您实际上并不需要
ban
字段来检查用户是否被禁止。事实上,您可能要考虑消除它。实际上,我会更进一步并建议使用 banned_until
而不是 date_banned
(或同时使用它们)。 banned_until
字段将使您的查询更简单,并允许您在发布禁令时预定义任意禁令持续时间。在这种情况下,当用户登录时,您可以简单地进行以下检查:... WHERE NOW() > banned_until;
更新:
要获取到禁令结束的剩余天数,可以使用 MySQL 中的
TIMESPANDIFF()
函数:SELECT TIMESTAMPDIFF(DAY, NOW(), DATE_ADD(date_banned, INTERVAL 10 DAY)) ...
或者,如果您要使用
banned_until
字段,它会更短:SELECT TIMESTAMPDIFF(DAY, NOW(), banned_until) ...
关于php - 如何对帐户创建定时禁令? (PHP/mysql),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2783010/