PHP表单阻塞域

PHP表单阻塞域,php,html,forms,spam,mailer,Php,Html,Forms,Spam,Mailer,我对PHP非常陌生(我更喜欢Ruby),但我公司的网站有一个电子邮件表单,客户可以填写以订购样本。我收到的垃圾邮件主要来自@yahoo域名。是否有一段代码可以插入到我的formmailer.php文件中,以防止人们从Yahoo向表单提交内容 感谢您在advanced中的任何建议 更新: <form action="formmailer.php" method="post" id="contact" style="margin-bottom: 0;" onsubmit="return mat

我对PHP非常陌生(我更喜欢Ruby),但我公司的网站有一个电子邮件表单,客户可以填写以订购样本。我收到的垃圾邮件主要来自@yahoo域名。是否有一段代码可以插入到我的formmailer.php文件中,以防止人们从Yahoo向表单提交内容

感谢您在advanced中的任何建议

更新:

<form action="formmailer.php" method="post" id="contact" style="margin-bottom: 0;" onsubmit="return math_check()"> 

对于使用的脚本

<script type="text/javascript">
function math_check(){
var nr = document.getElementById("math_check").value;
 if (nr != 7) {return false;}
 else {return true;}
}
</script>

函数数学检查(){
var nr=document.getElementById(“数学检查”).value;
如果(nr!=7){返回false;}
else{return true;}
}

我必须去做一些研究,这样我在未来会有一个更好的计划。感谢您的帮助。

搜索电子邮件地址中的域:

if (preg_match("/@yahoo/", $email)){
  //Yahoo domain detected.
}

将以下选项之一添加到文件中,而不是阻止整个域:

PHP解决方案:
(假设使用带有方法POST的表单)

在您的表单文件中:

3+4=

在mail/php文件中:

$math_check = $_POST["math_check"];
if ( != 7) {die()};
您还可以使用javascript实现这一点,如果有人错过了数学测试,可能更容易说:)

Javascript解决方案

在您的html上:

<form action="formmailer.php" method="post" id="contact" style="margin-bottom: 0;" onsubmit="return false;">
    <input type="text" id="math_check" />
    <button type="submit" />Submit</button>
</form>

})

我相信你可以检查电子邮件地址表单的输入字符串,看看“yahoo”这个词是否存在,就像Jaris answer一样,但这太疯狂了,因为任何真正的yahoo用户!电子邮件将被阻止。您可能应该实现某种验证码,比如阻止垃圾邮件填充您的表单

如果你不喜欢CAPTCHA,你可以尝试其他方法来检测提交表单的是否是真人,比如简单的数学问题(虽然这些问题很容易被破解,但如果是低流量的网站,它至少可以阻止简单的垃圾邮件机器人)。您还可以使用蜜罐字段,也可以限制表单的提交次数。查看CAPCTHA的其他替代品


我并不是说这将是万无一失的,但它比阻止任何碰巧使用雅虎电子邮件地址的可怜人要好。

将这样的域名拒之门外并不好。最好添加验证码或简单的3+4=?在javascriptSo中,您的公司想要拒绝拥有Yahoo!电子邮件地址?在网站上实现之前,你可能需要确认这一点。你可以像我想做的那样使用验证码,这样我就不会收到发送给营销人员的垃圾邮件,营销总监希望阻止垃圾邮件,因为我们是B2B,他只想要业务域。所以没有可能的客户可以拥有雅虎帐户?!我不会那样做。酷,我该如何在我的脚本中实现它?我会将我的发送者包装在其中,还是创建一个if语句并使用邮件脚本作为else?我能将它放在PHP表单的任何地方吗?我猜这些都是全局变量。实际上,我认为使用JS解决方案会更容易,谢谢。虽然现在当我提交表单时,不管我在math_check输入中输入了什么,表单仍然会发送表单,但我将我在原始帖子中使用的代码作为更新。再次感谢你的帮助。@geoffley,很好,我帮了忙。我发布了一个与你的代码相匹配的更新答案,还有一个演示。让我知道它是否对你有好处。
window.onload = function () {
var form = document.getElementById("contact");
function math_check() {
    var nr = document.getElementById("math_check").value;
    if (nr != 7) {
        return false;
    } else {
        form.submit();
    }
}
form.addEventListener("submit", math_check, false);