这个简单的垃圾邮件概念是否有效? (需要优化?)

时间:2013-01-09 17:04:41

标签: php javascript jquery bots spam

简介

我们在之前的项目中处理了一些垃圾邮件问题,并使用以下简单概念阻止任何垃圾邮件机器人。我现在想要将其实现为更大的项目。在我这样做之前,我希望优化它,它在同一页面上以多种形式工作,但我还没有得到这个技巧,或者我不确定它是否值得重建为一个更复杂的版本,如果它没用。 / 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

1 个答案:

答案 0 :(得分:1)

Captcha曾经是防止垃圾邮件的有效方法。它现在被打破了,因为它被广泛实施,创造了打破它的经济动机(google“captcha broken”)。

我看到这种方法在项目中很有效。你可能会冒某个人,在某些时候,会有动力去打破它。正确实施后,我相信它在此时提供了合理的防垃圾邮件保护。