2013-06-24 60 views
-1

我对PHP很新颖(我更偏向Ruby),但我公司的网站有一个电子邮件表格,客户可以填写订单样本。我收到的垃圾邮件主要来自@yahoo域名。是否有一段代码可以插入到我的formmailer.php文件中,该文件可以阻止人们向Yahoo提交某些内容?PHP表单阻止域名

感谢您的任何建议先进!

更新:

<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> 

脚本我有去,做一些这方面的研究,所以我对未来更好的计划。感谢你的帮助。

+2

不好,以防止这样的域名。最好添加一个验证码或简单的3 + 4 =?在javascript – Sergio

+0

因此,贵公司要拒绝来自拥有Yahoo!的客户的所有订单。电子邮件地址?您可能需要在业务实施前确认该业务。 – David

+0

您可以使用验证码,例如http://www.google.com/recaptcha – Falci

回答

0

添加的这一个选项,以你的文件,而不是阻止整个域:

PHP解决方案:
(假设你使用使用POST方法)

on your form file:

3 + 4 = <input type="text" id="math_check" value="?" name="math_check" />

上的邮件/ PHP文件:

$math_check = $_POST["math_check"]; 
if (!= 7) {die()}; 

你也可以用JavaScript做到这一点,也许更容易说的情况下,一个人遗漏了数学考试:)

JavaScript解决方案
(Demo here)

你的HT毫升:

<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> 

和如果数为7,这将仅提交的JavaScript:

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); 

};

+0

我可以将它放在我的PHP表单的任何位置吗?我猜这些是全局变量。 – George

+0

我真的认为使用JS解决方案会更容易,谢谢。尽管现在当我提交表单时,无论我将其放入math_check输入中,它仍然发送表单,我将原始文章中使用的代码作为更新。再次感谢您的帮助。 – George

+0

@GeorgeOffley,很好,我很有帮助。我发布了一个匹配你的代码和演示的更新答案。让我知道它是否适合你。 – Sergio

0

搜索电子邮件地址里面的域:

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

很酷,我将如何在脚本中执行该操作?我只是将我的发件人包裹起来,或者创建一个if语句并使用邮件脚本作为else? – George

0

嗯,我相信你可以检查电子邮件地址表单的输入字符串,并检查是否存在雅虎字样,如Jaris的答案,但这是疯了,因为任何真正的用户与雅虎!电子邮件将被阻止。您应该实施某种形式的验证码,例如reCAPTCHA以阻止Spambots填写表单。

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

我并不是说这将是万无一失的,但它比拦截任何恰好使用雅虎电子邮件地址的可怜灵魂更好。