0

すべて、私は自分のページに電子メールを送信するために使用するフォームを持っています。フォームページには、次のコードがあります。

<input type="text" name="Name" id="your_name" class="contact_form_input_text">
<input type="text" name="Email_Address" id="your_email" class="contact_form_input_text">
<input type="text" name="fill_me_out" id="fill_me_out">
<input type="button" value="Send" id="submit_contact_form_button">

最初のテキスト ボックスは lamecaptcha で、PHP 側でチェックして、入力されていないことを確認します。また、これでいくつかのJSを使用して非表示にします:

jQuery(function(){
    jQuery("#fill_me_out").hide();
});

次に、jQuery バリデーターを使用してページを送信する前に、次のフォーム検証を行います。

jQuery("#contact_form").validate({
    rules: {
        Email_Address: {
            required: true,
            email: true
        },
        Name: {
            required: true
        }
    },
    messages: {
        Email_Address: {
            required: "Please enter an email address!",
            email: "Please enter a valid email address!"
        },
        Name: {
            required: "Please enter your Name!"
        }
    }
});

jQuery("#submit_contact_form_button").click(function(event) {
      if (jQuery("#contact_form").valid()) {
        challengeField = jQuery("input#recaptcha_challenge_field").val();
            responseField = jQuery("input#recaptcha_response_field").val();
            var html = jQuery.ajax({
            type: "POST",
            url: site_url + "ajax.recaptcha.php",
            data: "recaptcha_challenge_field=" + challengeField + "&recaptcha_response_field=" + responseField,
            async: false
            }).responseText;

            if(html == "success")
            {
                //$("#captchaStatus").html(" ");
                // Uncomment the following line in your application
                //return true;
                jQuery("#contact_form").submit();
            }else{
                jQuery("#captchaStatus").html("Your captcha is incorrect. Please try again");
                Recaptcha.reload();
                return false;
            }
      }
      return false;
    });

すべてが正しく入力されている場合、ページは送信されます。ラメキャプチャをチェックするために、次のチェックがあります。

$lamecaptcha_check = $_POST['fill_me_out'];
if($lamecaptcha_check!=""){
    echo '[box style="alert"]Why are you trying to spam us? It could be because you don\'t have Javascript enabled and filled out an incorrect box![/box]';
}else{
    //Send the form using mail
}

フォームを送信するのは送信ではなくボタンであるため、送信するにはjquery検証を通過する必要があります。どういうわけか、まだ空のメール メッセージが届きます。スパムや空のメール メッセージを防ぐために他にできることを知っている人はいますか? バックエンドの変数をチェックして空白でないことを確認する必要があると考えていましたが、値がいくつかない限りフォームを送信することさえできないため、最初のページに有効な電子メールアドレスが必要です。どんなアイデアでも大歓迎です!

ありがとう!

4

1 に答える 1

1

送信ボタンが jQuery を介して機能するからといって、それ以外の方法でフォームを送信できないわけではありません。

スパムボットはおそらくフォームの HTML を調べ、さまざまなフィールドを調べてから、関連情報を含む POST 要求を送信するだけです。jQuery は評価されません。

このようなことをしたい場合は、フォームの を設定し、action="javascript:;"送信する直前に jQuery で実際の値に更新します。

于 2013-01-02T15:36:09.757 に答える