2017-12-11 25 views
0

Google recaptcha v2をajax phpで検証しようとしていますが、コードの検証なしに送信しました。ここから私は別のPHPページにすべての情報をGoogle recaptcha v2 with ajax and php

if((fnameerr == "no") && (lnameerr == "no") && (emailerr == "no") && (cnameerr == "no") && (discounterr == "no") && (addresserr == "no") && (descerr == "no")){ 
       $.ajax({ 
        url:"promoform.php", 
        method:"POST", 
        data:{fname:fname, lname:lname, email:email, cname:cname, discount:discount, address:address, desc:desc, website:website, captcha: grecaptcha.getResponse()}, 
        success: function(data){ 
         if($("#promotionSuccess").hasClass("hidden")){ 
          $("#promotionSuccess").removeClass("hidden"); 
         } 
         $("#mailErrorMessage").html(data); 
        } 
        }); 

を送っていると私はそこのreCAPTCHAを検証しています:

$secret = "my secret key is here which I got from google"; 
$response = $_POST["captcha"]; 
$remoteip = $_SERVER['REMOTE_ADDR']; 
$url = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=$secret&response=$response&remoteip=$remoteip"); 
$content = json_decode($url, TRUE); 
if($content['success'] ==1){ do somthing} 
+0

どのようにajaxコールを開始しますか?フォームのsubmit()イベントまたは 'submit'ボタンのクリックで? –

答えて

0

あなたはAjaxでフォームを送信する場合は、まずあなたがインターセプトする必要がありアクションを送信し、デフォルトの動作をブロックします。これは2つの方法で行うことができます。 prevendDefault()メソッドを経由して

  1.  
    $('#form').submit(function(e){ 
        e.preventDefault(); 
    
        // process here 
    }) 
    
  2. falseを返すことによって:

     
    $('#form').submit(function(e){ 
        // process here 
    
        return false; 
    }) 
    

代わりの提出()イベントをキャプチャし、あなたも同じことを達成することができます送信ボタンのクリックイベントをキャプチャして動作を確認する:

$('#mysubmitbutton').click(function(e){ 
    e.preventDefault(); 
    // process here 
}) 

また、falseを返すこともできます。

キャッチコピーの検証が完了したら、成功した場合はデータを処理できます。たとえば、DBに保存して、電子メールで送信するなどです。また、操作が成功したかどうかを示す応答をブラウザに返す必要があります。次に、あなたのAJAX呼び出しは、それをピックアップし、必要な措置をとることができ、次のよう

if($content['success'] ==1){ 
    // valid -> do something 

    echo json_encode(array('status' => 'true')); 
    exit; 
} 
else{ 
    // not valid 
    echo json_encode(array('status' => 'false')); 
} 

は今、バックあなたのAJAX呼び出しを行ったところで、あなたは応答を処理することができます

success: function(data){ 
    res = JSON.parse(data); // parse response to a js object 

    if(res.status == 'true') 
    { 
    alert('Form was submitted successfully!'); 
    } 
    else 
    { 
    alert('Captcha validation falied! Please try again'); 
    } 
} 

・ホープ、このことができます。