我正在尝试实施Google Recaptcha v2,该版本具有“ 我不是机器人,您必须单击图像,例如:消防栓。
前端工作正常,但是我无法正确获取服务器端代码。
我在当前的验证中尝试了此操作,但是即使正确完成了验证码后,我仍然会收到我设置的验证错误消息。
$secretKey = 'MY_SECRET_KEY';
$verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secretKey.'&response='.$_POST['g-recaptcha-response']);
$responseData = json_decode($verifyResponse);
if($responseData !== 'success') {
$message .= 'Invalid captcha';
}
if(!empty($message)) {
$response['success'] = false;
$response['message'] = $message;
} else {
//success
将$ responseData记录到控制台时,我得到:
{success: true, challenge_ts: "2019-07-11T17:11:20Z", hostname: "example.com"}
答案 0 :(得分:1)
json_decode()
的文档中明确说明了以下内容:
以适当的PHP类型返回json编码的值。价值观 true,false和null返回为TRUE,FALSE和NULL 分别。如果无法解码json或 编码的数据比递归限制要深。
您不应该将json_decode()
的返回值与字符串进行比较(在您提供的示例中,'success'
)。而是在普通PHP property getter/setter notation syntax中访问对象内部的值:
if(!$responseData->success) {
$message .= 'Invalid captcha';
}