7

我正在使用codeigniter 2.4。我必须在我的任何项目中使用 google recaptcha。下面是我的代码。

// field validation
$this->form_validation->set_rules('recaptcha_challenge_field', 'Captcha Code', 'trim|required|xss_clean|callback_checkCaptcha');

回调函数是:

    function checkCaptcha($captcha){
    $resp = $this->recaptcha->recaptcha_check_answer ( $this->input->ip_address(), $this->input->post('recaptcha_challenge_field',true), $this->input->post('recaptcha_response_field',true));

    if($resp->is_valid)
    {
        return true;
        }

    else 
    {
         $this->form_validation->set_message('checkCaptcha', 'Sorry Invalid captcha code');
         return false;
        }

    }

但我收到此错误:

  A PHP Error was encountered

  Severity: Notice

  Message: Trying to get property of non-object

 Filename: controllers/offer.php

 Line Number: 59

请帮助我哪里出错了。

谢谢。

4

4 回答 4

2

我已经更新了我的代码,它现在对我有用。在验证码库中,我将 is_valid 属性公开,然后替换

if($resp->is_valid)

if($this->recaptcha->is_valid)

现在它对我有用。

感谢所有回答我问题的人。

于 2013-11-04T12:00:25.103 回答
2
public function captcha_verify(){
    $form_response = $this->input->post('g-recaptcha-response');
    $url = "https://www.google.com/recaptcha/api/siteverify";

    $secretkey = "6LeBGG0UAAAAAEzWMaT0sOjPxcbNwQe7TiWWAknQ";

    $response = file_get_contents($url."?secret=".$secretkey."&response=".$form_response."&remoteip=".$_SERVER["REMOTE_ADDR"]);

    $data = json_decode($response);
    print_r($data);

    if (isset($data->success) && $data->success=="true") {
        echo "Successfully Passed through captcha";
    }
    else{
        echo "Please Fill captcha";
    }
}
于 2018-08-29T07:51:51.523 回答
1

您还需要在此处提供您的私钥作为第一个参数:

$resp = $this->recaptcha->recaptcha_check_answer ($private_key,  $this->input->ip_address(), $this->input->post('recaptcha_challenge_field',true), $this->input->post('recaptcha_response_field',true));
echo "<pre>";print_r($resp);die; #check the response array.
于 2013-11-04T11:48:13.480 回答
0

我正在使用codeigniter 3.1.5。我必须使用此代码,但不适用于我,但此代码适用于我在 codeigniter 3.1.5 中的 google recaptcha 中的 google recaptcha 中。

这是我在 codeigniter 中的 google recaptcha代码

<script src='https://www.google.com/recaptcha/api.js'></script>
<div class="g-recaptcha" data-sitekey="ADD_YOUR_GOOGLE_SITE_KEY_HERE"></div>

谷歌验证验证码的功能

function google_validate_captcha() {
    $google_captcha = $this->input->post('g-recaptcha-response');
    $google_response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=your secret key here &response=" . $google_captcha . "&remoteip=" . $_SERVER['REMOTE_ADDR']);
    if ($google_response . 'success' == false) {
        return FALSE;
    } else {
        return TRUE;
    }
}

参考:: http://www.onlinecode.org/integrate-google-recaptcha-codeigniter-validation/

于 2017-09-20T10:14:32.033 回答