我不习惯使用每次游戏中断时应减少的值,例如警告的用户,例如30 days
持续的警告,可以在3 warns
之前达到最大值table_user
- username
- email
- warnings (integer)
- last_warn (timestamp data type)
用户被禁止
我想设计一个这样的用户表,但是现在我应该对它进行处理,我发现它每隔30天递减一次就没用了:
{{1}}
我应该使用一些php计时器吗?
是否存在关于用户警告的任何标准技术?
答案 0 :(得分:2)
您可以创建另一个表
User_warnings:
user_id
warn_timestamp
每当用户警告时,您首先删除超过30天的所有条目,然后检查是否仍存在两个或更多警告。然后禁止用户。
如果您需要有关所有警告的历史记录,请不要删除旧警告,而只是在过去30天内查询警告。
这样您就不必每天减少,但只需检查何时出现另一个警告。
答案 1 :(得分:1)
通过突破用户的警告来规范化您的表格,例如:
Table: Users
UserID int auto generate PK
UserName
UserEmail
Table: UserWarnings
UserID
WarningDate
您现在可以编写查询以确定过去30天内是否有三个警告。发生“警告”时运行此查询,如果返回行,则禁止用户。
查询看起来像这样:
SELECT
COUNT(*)
FROM UserWarnings
WHERE UserID=...your user id... AND WarningDate>=...current date time...
HAVING COUNT(*)>2
通过制作警告表,您可以保留完整的警告历史记录,这可能很有用。
答案 2 :(得分:1)
我相信,用户警告系统确实没有标准设计。 “三击,你出局”是一种典型的方法,但并不总是最好的。例如,如果我的网站上有N
规则,并且我们会说K
这些规则是严重违法行为,那么我认为不那么严重的违规行为会给予三次罢工。但也许严重的违法行为是autoban或两次罢工?
如果我必须设置这样的东西,我会创建一个看起来像这样的表:
user_warnings:
- warning_id
- user_id
- created_at
- offense_level
然后可能会设置一个查询,您可以在其中找到任何在过去T
天内具有大于或等于可禁止攻击级别值的总和攻击级别的用户。如果他们的总进攻级别超过建议值,则禁止用户。我会说将进攻级别设置为5级,并且具有分层级别的攻击。</ p>
在我看来,永远不要删除过去的罪行。你永远不知道什么时候记住之前发生的事情是很重要的,记录它的记录是件好事。只需确保此查询仅检查小于30天的日期(或者您想要设置的警告可能有多天)。