我制作了一个禁止脚本,它会更新成员列表并放入SET banned=Yes WHERE username=$_POST[username]
但现在我想做定时封禁,比如如果一个用户被封禁了一天,他将在他的封禁时间之后被解除封禁。
有谁知道我该怎么做?我对 MySQL 和时代不太好。
只需将列更改为“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>
如果我们返回一行,则该用户被禁止,否则不会。
您可以节省禁令的时间和禁令的持续时间。
伪代码:
if (current_date == ban_time + ban_duration) { unban_user }
存储用户被封禁的时间和封禁的持续时间。当用户尝试访问任何需要知道他或她是否被禁止的页面时——显示“你被禁止”消息或诸如此类的信息——查询数据库以获取用户信息。如果他被禁止,请将禁止持续时间添加到禁止时间,并将其与您当前的时间进行比较。如果您已通过该计算时间,则可以解除禁令。
您必须保存禁止时间(unix 时间戳字段或日期时间)以及禁止持续时间,当用户尝试登录时,您可以简单地检查禁止后经过了多少时间,如果禁止时间已过,更新行,并将禁止列设置为“否” '