如何设置30天的电子邮件验证以由用户重新发送


How to set 30 days email validation to resend by user?

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

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

电子邮件可能是独一无二的。通过电子邮件验证,我们可以在接下来的30天内保留该特定用户。

请帮帮我。

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

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变量为非零,则甚至不加载表单。