PHP中的ReCaptcha v2实现

时间:2019-01-18 16:55:27

标签: php recaptcha

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

这是我的表单代码

<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个部分)

$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。

PHP Recoverable fatal error:  Object of class stdClass could not be converted to string

$ _ POST ['g-recaptcha-response']的回赠

string(334) "03AF6jDqXmI34YXuv1jIkgqHFo7TcjWbOq4-LJ_aTBRyzDld5BytgSe4ck_dolLm3C9CUzxela7LWa7hYJeJfEBONPPsx3ol7Ch-7SY8I9WyAFEy-iiGqwxZBY41gCSw7dfT42doqg-FIxwZweLOsH5YEf8i-L2QgkAJEd_PrWc9m2Uf6ZNbTDqCNr3VFqF8_0I-gS0Rhj9Z5XXwQLC9LeNfSWhI0DkpYNgK-hO4nGfEsaZT0PMlAg9DbHh9CzKDUzPpguVxz1zw0FP8CgwyBd9sgzpR4LfAoPuduGj0Z0wVcqbQ-CTifFtH7kCJuNG6bCDEufYfntj-8L"

很抱歉,如果这是非常基本的内容,但对PHP来说是新的

2 个答案:

答案 0 :(得分:1)

您正在尝试<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/100/three.min.js"></script> <script src="https://threejs.org/examples/js/controls/OrbitControls.js"></script>一个stdObject。

echo

这不起作用,因为$googleobj = json_decode($response); echo $googleobj; 不是字符串,而是对象。当使用$googleobj命令时,PHP会尝试将echo所转换的内容转换为字符串,而这对于对象是无法实现的。

相反,您可以这样做:

echo

或者完全删除$googleobj = json_decode($response); print_r($googleobj); 行。

答案 1 :(得分:-1)

这对我有用:

$response = file_get_contents(as you have it);

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

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

true中的参数json_decode使其成为一个关联数组。因此,您可以像访问普通数组一样访问它。 看看this了解更多信息