reCAPTCHA总是遇到真实的

时间:2017-01-17 15:01:43

标签: php

这段代码出了什么问题。无论我是否勾选reCAPTCHA,它都会进入else子句。

<?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 个答案:

答案 0 :(得分:2)

在PHP中,点.运算符用于附加字符串 因为PHP的弱键入,你可以将字符串附加到所有内容。

这行代码:

if($response.success==false){

会在$ response stdClass附加'成功' 如果启用通知,则会触发通知,因为该字符串不在引号内。

在这种情况下,输出字符串为success,在PHP中为not false

你想要的是这样的:

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

您需要将其作为stdClass的属性进行访问。