如何对帐户创建定时禁止?(PHP/mysql)

如何对帐户创建定时禁止?(PHP/mysql),php,mysql,Php,Mysql,我想创建一个功能,允许我禁止一个帐户10天。 在dbc中,我有一个名为“ban”的字段,布尔值为1=notban,0=ban。我还有一个名为“date_Banked”的字段,它只是用户被禁止的时间戳 我的问题是,如何创建一个从用户被禁止之日起10天的时间框架 詹姆斯在“2010-05-03 20:43:48”节目中被禁。那么我怎样才能在时间戳上加上10天呢?10天后,它将把“禁令”设置为1(这是不被禁止的) 编辑:如何显示用户还剩多少天的禁令?例:离unban还有8天 我能…现在做吗()-$da

我想创建一个功能,允许我禁止一个帐户10天。 在dbc中,我有一个名为“ban”的字段,布尔值为1=notban,0=ban。我还有一个名为“date_Banked”的字段,它只是用户被禁止的时间戳

我的问题是,如何创建一个从用户被禁止之日起10天的时间框架

詹姆斯在“2010-05-03 20:43:48”节目中被禁。那么我怎样才能在时间戳上加上10天呢?10天后,它将把“禁令”设置为1(这是不被禁止的)

编辑:如何显示用户还剩多少天的禁令?例:离unban还有8天

我能…现在做吗()-$date\u被禁止?或者如何从当前日期中减去禁止日期?

unban\u date=date\u ADD(现在(),间隔10天)
应该可以做到这一点


然后,只要有一个cron来检查任何人的unban_日期是否在过去,你就可以更新你的禁止标志。

要在MySQL中的
date_banked
字段中添加10天,你只需使用该函数即可。当用户尝试登录时,您可以执行以下检查,以查看禁令是否已过期:

... WHERE NOW() > DATE_ADD(date_banned, INTERVAL 10 DAY);
然后,当用户尝试登录时,您可能需要切换
ban
字段。否则,您可以每天或以任何其他速率运行计划作业,以检查过期的禁令并相应地更新此字段

但是,您实际上不需要使用
ban
字段来检查用户是否被禁止。事实上,你可能想考虑消除它。事实上,我会更进一步,建议使用
禁止日期
而不是
禁止日期
(或者两者都使用)。
banked_until
字段将简化查询,并允许您在发布禁令时预定义任意禁令持续时间。在这种情况下,当用户登录时,您只需执行以下检查:

... WHERE NOW() > banned_until;

更新:

要获取禁令结束前的剩余天数,可以使用MySQL中的函数:

SELECT TIMESTAMPDIFF(DAY, NOW(), DATE_ADD(date_banned, INTERVAL 10 DAY)) ...
或者,如果要使用
banked_until
字段,则该字段将更短:

SELECT TIMESTAMPDIFF(DAY, NOW(), banned_until) ...

因此,我需要另一个unban_日期字段(10天后),但如何用unban_日期检查当前日期?
UPDATE bans SET ban=1,其中unban_date实际上不需要cron作业。当被禁止的用户试图进入时,可以在登录功能中执行“has ban expired”检查。如果未通过,您将使用适当的消息拒绝登录,否则只需重置ban标志并让他们进入。这是一个好主意!我会在之前禁止你,并根据我的喜好设定时间限制。