2017-01-17 7 views
0

このコードは何が問題なのですか。私がreCAPTCHAをチェックするかどうかにかかわらず、それはelse節に行きます。reCAPTCHAが常に真実になる

<?php 
// This is added for Google Captcha 

    $url = 'https://www.google.com/recaptcha/api/siteverify'; 
    $privatekey = '6LdBjyATAAAAABZe1O-DKBEQnOIzanoVLGEvsvyu'; 

    $response = file_get_contents($url."?secret=".$privatekey."&response=".$_POST['g-recaptcha-response']."&remoteip=".$_SERVER['REMOTE_ADDR']); 
    $data = json_decode($response); 

    if($response.success==false){ 
     echo "<h2>Spam Spam go away</h2><p>And if you're not spam, we apologise. Please go back and tick the reCAPTCHA box.</p><p>Thank you</p>"; 
     die(); 
    } else { 
// do loads of clever stuff 
} 
+1

'var_dump($ response);'これは配列/オブジェクト値を取得するjavascriptの方法です。 PHPでは連結期間です。 '$ response'が配列の場合は' $ response ['success'] '、それがオブジェクトの場合は' $ response-> success'です。 – aynber

答えて

2

ドットでは、.オペレータは文字列を追加するためのものです。
PHPを弱く入力するので、文字列をすべてに追加できます。

このコード行:

if($response.success==false){ 

は$応答stdClassに '成功' を追加します。
通知を有効にすると、文字列が引用符で囲まれていないため通知が表示されます。

出力文字列はこの場合successであり、PHPではnot falseです。何をしたい

、これは次のようになります。

if($response->success==false){ 

あなたはstdClassのプロパティとしてそれにアクセスする必要があります。

関連する問題