I have installed the latest recaptcha from google but it always returns false upon post submit and always returning "invalid-input-secret" error even though the verification is always correct from the frontend view. What could be the reason on this. Btw I am testing everything in localhost xampp with phalcon framework. Here is the part where I check the captcha:
protected function validate_data($post, $ip){
$validation = new Validation();
$validation->add(
'user_name',
new PresenceOf(
array(
'message' => 'The Username is required'
)
)
);
$validation->add(
'email',
new PresenceOf(
array(
'message' => 'The e-mail is required'
)
)
);
$validation->add(
'password',
new PresenceOf(
array(
'message' => 'The Password is required'
)
)
);
$validation->add(
'cpassword',
new PresenceOf(
array(
'message' => 'The Confirmation Password is required'
)
)
);
$validation->add(
'email',
new Email(
array(
'message' => 'The e-mail is not valid'
)
)
);
$validation->add('password',
new Confirmation(array(
'message' => 'Password doesn\'t match confirmation',
'with' => 'cpassword'
)
)
);
$error = $validation->validate($post);
$errors = array();
if(count($error)){
foreach($error as $e){
$errors[] = $e;
}
}
$data = array(
'secret' => "my secret key",
'response' => $post['g-recaptcha-response'],
'remoteip' => $ip
);
$verify = curl_init();
curl_setopt($verify, CURLOPT_URL, "https://www.google.com/recaptcha/api/siteverify");
curl_setopt($verify, CURLOPT_POST, true);
curl_setopt($verify, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($verify, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($verify, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($verify);
$captcha = json_decode($res);
if($captcha->success == false){
$errors[] = "Invalid Captcha, You are a freakin robot!";
}
return $errors;
}
what could be the reason here? here is the output when you dump the response:
object(stdClass)#70 (2) { ["success"]=> bool(false) ["error-codes"]=> array(1) { [0]=> string(20) "invalid-input-secret" } }
Silly me, I doubled check the secret key and it was just missing a single character at the beginning. That solved it.