【发布时间】:2014-09-22 01:37:06
【问题描述】:
我有一个记录无效用户登录尝试的表。每次进行无效尝试时,用户名、用户 IP、用户电子邮件和时间/日期都会存储在数据库中。
我想要做的是检查在任何 24 小时的时间段内,同一用户是否有超过 X 次无效尝试。但是,用户可以随时更改电子邮件、用户名或 IP。因此,我需要检查这 3 个字段中的任何一个字段是否相同。
例如:
- 用户 ID:1; IP:1.1.1.1;邮箱:test@test.com
- 用户 ID:2; IP:1.1.1.1;邮箱:test2@test.com
- 用户 ID:1; IP:1.1.1.2;邮箱:test3@test.com
- 用户 ID:4; IP:1.1.1.4;邮箱:test@test.com
- 用户 ID:5; IP:1.1.1.4;邮箱:test5@test.com
所有这些都将与 SAME 用户匹配,因为它们共享用户 ID、IP 或电子邮件。然后我需要输出所有用户 ID、IP 和电子邮件,以便我可以禁止另一个表中符合这些条件的任何用户。
【问题讨论】:
-
如果
1.1.1与显示的所有ID一致,您可以根据IP地址的前3组数字。这似乎是与您发布的所有内容的唯一密切关系。 -
谢谢。 IP 只是一个例子,实际上它们将是真实的并且变化很大。这些用户仍然以某种方式联系在一起,因为每个人都彼此共享 ID、IP 或电子邮件。甚至 id2 和 id5 也是相关的,因为虽然它们不共享直接字段,但它们通过 id4 等具有二阶关系。
-
啊,我明白了。是的,我可以看到戈登的回答如何解释了试图解决问题的复杂性。这是一个令人头疼的问题。