在codeigniter中向google recaptcha添加错误消息

时间:2017-07-28 18:27:56

标签: codeigniter

我在我的项目中使用https://github.com/appleboy/CodeIgniter-reCAPTCHA库。我想在未输入recaptcha或无效的recaptcha时向表单添加错误消息...

我设置的其他字段......

$this->form_validation->set_rules('txtPassword', 'Password', 'trim|required|min_length[6]');
$this->form_validation->set_message('min_length', '%s: should have %s characters');

但是在recaptcha中没有名字...所以不知道如何在验证失败时显示验证错误...

1 个答案:

答案 0 :(得分:2)

如文档中所述,

$recaptcha = $this->input->post('g-recaptcha-response');
$response = $this->recaptcha->verifyResponse($recaptcha);

$response参数将返回truefalse。您可以使用codeigniter documentation

来使用会话flashdata

或者,如果你想坚持使用codeigniter的表单验证,那么你就是这样做的。

$this->form_validation->set_rules('g-recaptcha-response', 'recaptcha validation', 'required|callback_validate_captcha');
$this->form_validation->set_message('validate_captcha', 'Please check the the captcha form');

您需要创建一个方法validate_captcha,它将对captcha api进行file_get_contents调用,并根据它返回true或false。

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

希望这有帮助。