首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >管理用户警告

管理用户警告
EN

Stack Overflow用户
提问于 2010-03-04 02:08:02
回答 3查看 101关注 0票数 0

我不习惯使用像用户警告那样每过一段时间就递减的值,例如,warn可以在用户被禁止之前保持30 days的最大值3 warns

我曾想过要设计一个这样的用户表,但现在我应该在上面工作了,我发现每30天递减一次值是没有用的:

代码语言:javascript
复制
table_user
- username
- email
- warnings (integer)
- last_warn (timestamp data type)

我应该使用一些php计时器吗?

在用户警告方面有什么标准的技术吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-03-04 02:16:23

通过打破来自用户的警告来规范化您的表,如下所示:

代码语言:javascript
复制
Table: Users
UserID  int auto generate PK
UserName
UserEmail

Table: UserWarnings
UserID
WarningDate

现在,您可以编写一个查询来确定在过去30天内是否有三个警告。在出现“警告”时运行此查询,如果返回一行,则禁止该用户。

查询将如下所示:

代码语言:javascript
复制
SELECT
    COUNT(*)
    FROM UserWarnings
    WHERE UserID=...your user id... AND WarningDate>=...current date time...
    HAVING COUNT(*)>2

通过创建警告表,您可以保留完整的警告历史记录,这可能会很有用。

票数 1
EN

Stack Overflow用户

发布于 2010-03-04 02:16:44

您可以创建另一个表

代码语言:javascript
复制
User_warnings:
    user_id
    warn_timestamp

每当用户收到警告时,您首先删除超过30天的所有条目,然后检查是否仍然存在两个或更多警告。那就禁止这个用户。

如果您想要所有警告的历史记录,请不要删除旧警告,只查询最近30天内的警告。

通过这种方式,您不必每天都减少,而只需在出现另一个警告时进行检查。

票数 2
EN

Stack Overflow用户

发布于 2010-03-04 02:20:59

我认为,对于用户警告系统,确实没有标准的设计。“三振出局”是一种典型的方法,但并不总是最好的。例如,如果我在我的网站上有N规则,我们会说这些规则中的K是严重的违规行为,那么不那么严重的违规行为我会说是三次打击。但是,也许严重的违规行为是自动禁令或给两次打击?

如果我必须设置这样的东西,我会创建一个如下所示的表:

代码语言:javascript
复制
user_warnings:
- warning_id
- user_id
- created_at
- offense_level

然后可以设置一个查询,您可以在其中找到在过去T天内具有大于或等于bannable违规级别值的总和违规级别的任何用户。如果他们的总攻击级别超过了推荐值,则禁止该用户使用。我想说的是将攻击级别设置为5左右,并具有分级的攻击级别。

不过,在我看来,永远不要删除过去的违规行为。你永远不会知道什么时候记住以前发生的事情很重要,而且记录下来也是很好的。只需确保此查询只检查不到30天的日期(或者您想要设置的警告可以是多少天)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2373759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档