@atanatis

Почему json_decode не выполняется?

Здравствуйте.

При получении JSON файла и последующем декодинге выполнение скрипта просто завершается.
Какая вообще задача:

У меня есть html форма, в ней поле, в коротое помещается URL любого сайта. Далее я получаю эту страницу и зашифровываю (json_encode).

Следующем шагом мне нужно передать эту страницу для обработки другому скрипту. Он отправляется и помещается в $_POST, но при выполнении json_decode зашершается.

PHPStorm выдает следующее:
It may be caused by path mappings misconfiguration or not synchronized local and remote projects. To figure out the problem check path mappings configuration for 'test 3.local' server at PHP|Servers or enable 'Break at first line in PHP scripts' option (from Run menu).


Вот весь код (файл с формой):
function getPage()
{
    $link = trim($_POST['url']);

    $curl = curl_init($link);
    curl_setopt($curl, CURLOPT_HTTPGET, 1);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

    return curl_exec($curl);

}

$contentSite = getPage();
$contentSite_json = json_encode($contentSite);

$url = 'http://test3.local/HtmlProcessor.php';

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $contentSite_json);

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);


Второй файл:

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $replacement = json_decode($_POST, 0);
    $pattern = '/\<a\s.*?\>(.*?)\<\/a\>/iums';
    $formatted_text = preg_replace($pattern, '', $replacement);

    if (!is_null($formatted_text)) {
        echo $formatted_text;
    } else {
        http_response_code(500);
    }
}
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Он отправляется и помещается в $_POST, но при выполнении json_decode зашершается.
Очевидно, что в $_POST ничего нет. В этом легко убедиться сделав var_dump($_POST) во втором файле.

Что делать:
Во первых не понятно зачем паковать в json? Чем не угодила уже имеющаяся строка?
Во вторых - если пакуете в json, так уже и заголовок нужен соответствующий.
Ну и в третьих, так как вы не задали передаваемые данные в формате ключ-значение, в $_POST они не попадут, их надо тащить из инпут потока.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы