首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用PHP语言实现ReCaptcha v2

用PHP语言实现ReCaptcha v2
EN

Stack Overflow用户
提问于 2019-01-19 00:55:27
回答 2查看 217关注 0票数 0

所以我在实现Recaptcha v2时遇到了麻烦。

这是我的表单代码

代码语言:javascript
运行
复制
<form action="upload.php" method="POST" enctype="multipart/form-data">
<div id="html_element"></div>
<input type="file" name="file" style="font-family:'PSR';">
<button type="submit" name="submit">Upload</button>
<div class="g-recaptcha" data-sitekey="key" data-theme="dark"></div>

这是代码的recaptcha部分(相同的文件,但之前尝试拆分为2)

代码语言:javascript
运行
复制
$secret = 'the secret';
$response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=". $secret."&response=".$_POST['g-recaptcha-response']."&remoteip=".$_SERVER['REMOTE_ADDR']);

$googleobj = json_decode($response);
echo $googleobj;
$verified = $googleobj->success;

if($verified === true)
      {

无论我做什么,$verified总是返回false。回显部分是我尝试调试的部分,但这给了我另一个错误,随后是HTTP错误500。

代码语言:javascript
运行
复制
PHP Recoverable fatal error:  Object of class stdClass could not be converted to string

$_POST的Vardump‘g-recaptcha-response’返回

代码语言:javascript
运行
复制
string(334) "03AF6jDqXmI34YXuv1jIkgqHFo7TcjWbOq4-LJ_aTBRyzDld5BytgSe4ck_dolLm3C9CUzxela7LWa7hYJeJfEBONPPsx3ol7Ch-7SY8I9WyAFEy-iiGqwxZBY41gCSw7dfT42doqg-FIxwZweLOsH5YEf8i-L2QgkAJEd_PrWc9m2Uf6ZNbTDqCNr3VFqF8_0I-gS0Rhj9Z5XXwQLC9LeNfSWhI0DkpYNgK-hO4nGfEsaZT0PMlAg9DbHh9CzKDUzPpguVxz1zw0FP8CgwyBd9sgzpR4LfAoPuduGj0Z0wVcqbQ-CTifFtH7kCJuNG6bCDEufYfntj-8L"

如果这是非常简单的东西,我很抱歉,但我是PHP新手

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-19 01:02:24

您正在尝试echo一个stdObject。

代码语言:javascript
运行
复制
$googleobj = json_decode($response);
echo $googleobj;

这是行不通的,因为$googleobj不是一个字符串,而是一个对象。使用echo命令时,PHP会尝试将echo'd转换为字符串,但不能对对象执行此操作。

相反,您可以这样做:

代码语言:javascript
运行
复制
$googleobj = json_decode($response);
print_r($googleobj);

或者干脆完全删除echo行。

票数 1
EN

Stack Overflow用户

发布于 2019-01-19 01:04:59

这对我很有效:

代码语言:javascript
运行
复制
$response = file_get_contents(as you have it);

$googleobj = json_decode($response, TRUE);
$verified = $googleobj['success'];

if($verified === true) {
    ...

json_decode中的参数true使其成为关联数组。所以你可以像访问普通数组一样访问它。有关更多信息,请查看this

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54258349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档