Задать вопрос
@Programmir

Почему file_get_contents ничего не возвращает?

Хочу получить json данные с рекапчи 3. Делаю $response = file_get_contents($url), но если потом проверить if($response===false), то код срабатывает. Хотя если пройти по ссылке, то там всё нормально, json файл с данными, что score 0.9. Потом я перевожу в json_decode с параметром true, но там пустой массив. Видимо, file_get_contents ничего не возвращает из ссылки. В чем может проблема?
  • Вопрос задан
  • 586 просмотров
Подписаться 1 Простой 3 комментария
Пригласить эксперта
Ответы на вопрос 1
colonel
@colonel
Разработчик PHP, Laravel
Заглянул в свой старый код, у меня работает вот так:
Код

public static function check2()
    {
        $url = 'https://www.google.com/recaptcha/api/siteverify';
        $data = array(
            'secret' => Ts_App::getConfig('recaptcha2_priv_key'),
            'response' => Request::getVar('g-recaptcha-response')
        );

        $query = http_build_query($data);

        $options = array(
            'http' => array (
                'header' => "Content-Type: application/x-www-form-urlencoded\r\n".
                    "Content-Length: " . strlen($query)."\r\n".
                    "User-Agent:MyAgent/1.0\r\n",
                'method' => 'POST',
                'content' => $query
            )
        );
        $context  = stream_context_create($options);
        $verify = file_get_contents($url, false, $context);
        $captcha_success = json_decode($verify);

        if ($captcha_success->success==false) {
            return false;
        } else if ($captcha_success->success==true) {
            return true;
        }

        return false;
    }

Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы