简介
我们在之前的项目中处理了一些垃圾邮件问题,并使用以下简单概念阻止任何垃圾邮件机器人。我现在想要将其实现为更大的项目。在我这样做之前,我希望优化它,它在同一页面上以多种形式工作,但我还没有得到这个技巧,或者我不确定它是否值得重建为一个更复杂的版本,如果它没用。 / p>
澄清:我不想处理CAPTCHA或类似的事情。只需做一个原生解决方案。
概念
如果用户关注表单的任何input
字段,将发送AJAX-Query,其中将生成随机哈希标记并将其存储到$_SESSION
变量中。此哈希也将写入名为spamKey
的隐藏输入字段(例如)。
用户提交表单后,我会检查$_SESSION["spamKey"]
变量是否等于$_POST["spamKey"]
变量,所以我决定是否处理查询。
代码
简单表格
<form action="index.php" method="post" id="formOne">
<label for='input_eins'>Name</label>
<input type='text' id='input_eins' name='name' />
<label for='input_user'>E-Mail</label>
<input type='text' id='input_user' name='user' />
<label for='ta_text'>Comment</label>
<textarea name='text'></textarea>
<label for='input_spamKey'>spamKey</label>
<input type='text' id='input_spamKey' name='spamKey' />
<input type='submit' value='Senden'>
</form>
script.js(使用jQuery)
var spamKey = false;
$("#formOne > input").focus(function() {
if(spamKey == false) {
dataString = "action=getSpamKey";
$.ajax({
url: 'asyncresponse.php',
data: dataString,
type: "POST",
success: function(data) {
$("#input_spamKey").val(data);
if(data != "") {
spamKey = true;
}
}
});
}
});
asyncresponse.php(信息:POST-Variables已清理)
if($_POST["action"] == "getSpamKey") {
$spamKey = md5(time().microtime());
$_SESSION["spamKey"] = $spamKey;
echo $spamKey;
}
检查PHP中的例程
($_SESSION["spamKey"] == $_POST["spamKey"] && !empty($_SESSION["spamKey"]))
好的 - 我的问题是什么?
您建议我采取哪些措施来保护多种形式?可能是一个基本问题 - 这是处理垃圾邮件问题的有效解决方案吗?
提前感谢您的帮助。
您可以在此处找到一个简单的演示: http://godesign.ch/labor/antispam/index.php
答案 0 :(得分:1)
Captcha曾经是防止垃圾邮件的有效方法。它现在被打破了,因为它被广泛实施,创造了打破它的经济动机(google“captcha broken”)。
我看到这种方法在项目中很有效。你可能会冒某个人,在某些时候,会有动力去打破它。正确实施后,我相信它在此时提供了合理的防垃圾邮件保护。