php限制基于IP的mailto()调用

时间:2011-03-23 12:46:10

标签: php html

假设我创建了一个简单的html联系表单,并将一些数据(来自输入框的电子邮件)发送到php脚本。在这个php脚本中,mailto()函数用于使用$ POST变量中提交的电子邮件addy向用户发送电子邮件。

我希望我的php脚本检查执行脚本的人是否最近完成了它。

(例如,蒂姆使用表格,它给他发了一封电子邮件。5分钟后他不小心再次提交表格,我的脚本停止执行mailto()函数因为蒂姆今天已经使用了表格一次(20分钟无论如何) ))

2 个答案:

答案 0 :(得分:2)

每次发送邮件时,解决方案都是记录(通常是MySQL或SQLite数据库中的表)

  • 当前时间戳
  • 发送邮件的用户(例如,他的IP地址)

然后,当您提交表单时,如果当前用户有最近的行,则必须检查该数据库的表 - 如果没有,则发送邮件。

答案 1 :(得分:1)

首次使用mailto()提交邮件后,将Cookie设置为在20分钟内(或其他任何时间)过期。再次提交时检查cookie,如果有效且有效,请阻止发送。

编辑:查看有关用户删除自己的Cookie的评论。这并不妨碍它。

$expire_minutes = 20;

if (!isset($_COOKIE("alreadysent"))
{
  // First time:
  mailto();
  // Set the cookie
  setcookie("alreadysent", TRUE, time() + (60 * $expire_minutes)); // 20min expiry
}
else
{
  echo "sorry you already sent it.";
}