我想创建一个功能,允许我禁止一个帐户 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/

10-09 23:32