Реализация ReCaptcha v2 в PHP - PullRequest
0 голосов
/ 18 января 2019

Так что у меня возникли проблемы с реализацией 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)
      {

Что бы я ни делал, проверено $ всегда возвращает false. Часть эха была мной, пытающейся отладить, но это дало мне другую ошибку, сопровождаемую ошибкой HTTP 500.

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

Vardump из $ _POST ['g-recaptcha-response'] возвращает

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

Извините, если это очень простой материал, но я новичок в PHP

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Это сработало для меня:

$response = file_get_contents(as you have it);

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

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

Параметр true в json_decode делает его ассоциативным массивом. Таким образом, вы можете получить к нему доступ, как обычный массив. Взгляните на это для получения дополнительной информации

0 голосов
/ 18 января 2019

Вы пытаетесь echo stdObject.

$googleobj = json_decode($response);
echo $googleobj;

Это не работает, потому что $googleobj это не строка, это объект.При использовании команды echo PHP пытается преобразовать все, что было echo 'd в строку, что он не может сделать с объектом.

Вместо этого вы можете сделать:

$googleobj = json_decode($response);
print_r($googleobj);

Или просто полностью удалите строку echo.

...