-1

我对 PHP 很陌生(我更偏爱 Ruby),但我公司的网站有一个电子邮件表单,客户可以填写该表单以订购样品。我收到的垃圾邮件主要来自@yahoo 域。是否有一段代码可以插入到我的 formmailer.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>

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

4

3 回答 3

1

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

if (preg_match("/@yahoo/", $email)){
  //Yahoo domain detected.
}
于 2013-06-24T13:39:10.137 回答
0

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

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

在您的表单文件上:

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

在您的邮件/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>

以及仅当数字为 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);

};

于 2013-06-24T13:43:17.450 回答
0

好吧,我相信您可以只检查电子邮件地址表单的输入字符串并检查是否存在“雅虎”一词,就像 Jaris 的回答一样,但这很疯狂,因为任何真正的 Yahoo! 用户都可以使用它。电子邮件将被阻止。您可能应该实施某种 CAPTCHA(例如reCAPTCHA)来阻止垃圾邮件机器人填写您的表单。

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

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

于 2013-06-24T13:44:20.657 回答