[英]Google recaptcha and PHP
我正在尝试使用Google Recaptcha 1.0版对表单进行问题排查-提交表单时,g-recaptcha-response已填写,这表示Google很高兴这是真实的人,但是ReCaptchaResponse为空,这意味着表单无法提交,因为我无法提交确保这是一个真实的人。
提交表单后,这是$ _POST中的值:
[g-recaptcha-response] => 03AHJ_Vuvki7OVSl6bZug1NN5WPOK4HUiLmhAFMMl1RmEiwWzn-tIJ8iryAe01Z-RjzaAtfBKP2ITFc2SnrTV3v7CG7YosOspqXuMSuLDgHCqWG7CEdSCxlSUaaB6joNtOQYPTi0vP4n6sfupG0GfnjMkxJPnEfEnNvsCimsvtIkUbHfY18bYzXTarXCqjb_R_EHcnIl0zm5HhpIeJUFaJYqgivz1gRqkR_BZhlKzvCkVQkRw9Zl-RVRgThUFqI_IFjRnL5ZE5eV1VwrEZFx9j8AOq1gkYw6Cjk8wYSRp9Ax816ifnyYAPtV_NIM6qBpM3NfTejlZ0FT0fu7Kd5mqOFllqSaRVOpSdT-W2HrL4EkNBIeA-YrDwPu9-8-lX3WtZY6kvdm_9Cb_8I1tjKoAmu70mXC0yl5i9Rf0NluS_hAGwCIZFDW9V5PtiiYeD9HpiW3h4nZpzBKAC3FaRuQZNKfTEMPO0TelIlQ [submit] => )
这是ReCaptchaResponse的内容:
ReCaptchaResponse Object ( [success] => [errorCodes] => )
这是我用来验证响应的代码-它总是在!$ response-> success上失败,这是有道理的,因为成功为空,但是为什么在填充g-recaptcha-response时为空?
$secret= "MY_SECRET";
require_once('recaptchalib.php');
$reCaptcha = new ReCaptcha($secret);
if ($_POST["g-recaptcha-response"]) {
$response = $reCaptcha->verifyResponse(
$_SERVER["REMOTE_ADDR"],
$_POST["g-recaptcha-response"]
);
print_r($response);
print $response->success;
print $response->error-codes;
if ($response == null) {
$error_message='<p>Please validate your captcha response 1</p>';
$error=1;
} elseif (!$response->success){
$error_message='<p>Please validate your captcha response 2</p>';
$error=1;
}
} else {
$error_message='<p>Please validate your captcha response 3</p>';
$error=1;
}
对于这样的响应,请使用var_dump()
而不是print_r()
,因为后者将false
和NULL
打印为空白。
print_r($response);
-> ReCaptchaResponse Object
(
[success] =>
[errorCodes] =>
)
var_dump($response);
-> object(ReCaptchaResponse)#1 (2) {
["success"]=>
bool(false)
["errorCodes"]=>
NULL
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.