我搜索了SO并找到了几个good ideas,但没有任何100%解决了我遇到的这个php邮件问题。
注意:当我从服务器删除此文件时,垃圾邮件将停止。 Captcha也不是一个真正的选择,这是一个Ajax调用,它需要很快。我不是百分之百确定垃圾邮件发送者是如何做到的,但任何帮助都会很受欢迎。
以下是添加到表单中的HTML:
<input name="spam_stopper" value="DO NOT CHANGE THIS VALUE" style="display:none;"/>
以下是我在mail.php文件顶部添加的未阻止垃圾邮件的附加代码:
if ($_POST['spam_stopper'] != 'DO NOT CHANGE THIS VALUE') {
echo '<h3>Incorrect use of this form!</h3>';
exit;
}
if(!strpos($_SERVER['HTTP_REFERER'],'my-sample-domain-name.com'))
{
echo '<h3>Incorrect use of this form!</h3>';
exit;
}
if($_SERVER['REQUEST_METHOD'] != "POST"){
echo("Unauthorized attempt to access page.");
exit;
}
答案 0 :(得分:1)
您允许通过POST提交自己的表单进行访问。所以,如果我继续在你自己的网站上使用JavaScript提交它,比如使用Firebug,那么阻止我的是什么?
每个发送邮件请求都应附带一个只有一次有效的令牌,以确保您的表单不会被提交多次,即使是在您自己的网站上也是如此。