-2

我制作了一个禁止脚本,它会更新成员列表并放入SET banned=Yes WHERE username=$_POST[username]

但现在我想做定时封禁,比如如果一个用户被封禁了一天,他将在他的封禁时间之后被解除封禁。

有谁知道我该怎么做?我对 MySQL 和时代不太好。

4

4 回答 4

3

只需将列更改为“BannedUntil (datetime)”之类的内容,将其设置为未来的某一天:

UPDATE Users SET BannedUntil = DATE_ADD(NOW(), INTERVAL 1 DAY) WHERE username = <username>

并检查用户是否被禁止

SELECT 1 FROM Users WHERE BannedUntil > NOW() AND username = <username>

如果我们返回一行,则该用户被禁止,否则不会。

于 2013-02-24T16:05:47.020 回答
2

您可以节省禁令的时间和禁令的持续时间。

伪代码:

if (current_date == ban_time + ban_duration) { unban_user }
于 2013-02-24T16:05:57.270 回答
1

存储用户被封禁的时间和封禁的持续时间。当用户尝试访问任何需要知道他或她是否被禁止的页面时——显示“你被禁止”消息或诸如此类的信息——查询数据库以获取用户信息。如果他被禁止,请将禁止持续时间添加到禁止时间,并将其与您当前的时间进行比较。如果您已通过该计算时间,则可以解除禁令。

于 2013-02-24T16:07:15.430 回答
0

您必须保存禁止时间(unix 时间戳字段或日期时间)以及禁止持续时间,当用户尝试登录时,您可以简单地检查禁止后经过了多少时间,如果禁止时间已过,更新行,并将禁止列设置为“否” '

于 2013-02-24T16:06:46.847 回答