-4

我想在我的网页上设置一个计时器,如果用户填写联系我们页面。在接下来的 30 天内,他无法重新发送电子邮件或填写管理员联系页面。

之后,他可以填写联系我们页面。

可能是电子邮件可能是唯一的。通过电子邮件验证,我们可以将该特定用户保留 30 天。

请帮我。

4

1 回答 1

6

您可以创建一个如下所示的数据库表:

CREATE TABLE contact_flood
(
   `email_address` TEXT NOT NULL,
   `time` INT NOT NULL,
)

当用户使用如下查询提交联系表单时,他们的电子邮件地址和表单保存到此表的时间:

"INSERT INTO contact_flood (email_address, time) VALUES ('".$escapedEmailAddress."', '".time()."')"

然后,您可以对表单提交设置检查,以检查电子邮件是否在表格中:

"DELETE FROM contact_flood WHERE time < (".time()." - 2592000)"
"SELECT COUNT(*) as count FROM contact_flood WHERE email_address = '".$escapedEmailAddress

第一个查询删除表中超过 30 天的所有条目,第二个查询返回具有指定电子邮件地址的所有剩余行。如果count查询产生的变量不为零,则不要发送电子邮件并给用户适当的消息。如果它为零,请继续发送电子邮件,然后从之前运行插入查询。

另一种方法是每 30 天只允许每个 IP 地址提交一个表单。在这种情况下,您只需将 email_address 替换为 ip_address 即可。count在这种情况下,您还可以在加载表单之前运行检查,如果表单返回非零变量,甚至不加载表单。

于 2012-08-23T20:41:57.550 回答