У меня есть рабочий PHP-код, который извлекает веб-токен JSON (в виде строки) из запроса JSON, где тип контента, указанный в запрос от клиента — application/json. Следующий код извлекает строку с помощью php://input, которая работает, пока тип содержимого запроса — application/json.
Код: Выделить всё
$jsonString = file_get_contents('php://input');
$jsonArray = json_decode($jsonString, true);
$jwt =$jsonArray['jwt'];
var_dump($jwt); //THIS IS FOR DEBUGGING. COMMENTED OUT IN PRODUCTION
Код: Выделить всё
string(414) "hlMox0-LOTS OF CHARACTERS-za2b"
Эта строка веб-токена JSON может быть успешно декодирована для аутентификации пользователя.
Теперь мне нужно написать код для другой конечной точки для клиентских запросов, которая позволит клиенту отправлять файл изображения и метаданные. В этом случае для поддержки передачи файлов пользователь/клиент должен указать в запросе тип контента multipart/form-data. Однако php/input не работает с составными данными, и единственный способ получить метаданные — из переменной $_POST. В этом случае результирующая строка при извлечении и отображении с помощью var_dump() обозначается var_dump как необязательная.
Код: Выделить всё
$jwt = $_POST['jwt'];
var_dump($jwt);
Код: Выделить всё
"Optional(414)("hlMox0-LOTS OF CHARACTERS-za2b")";
Хотя эта строка при отображении выглядит идентичной приведенной выше, я не могу декодировать эту переменную. Var_dump предполагает, что хотя строки и повторяют одно и то же, они разные. Вторая версия является «дополнительной». Для тех, кто не знаком с термином «необязательный», он используется во многих языках программирования для обозначения переменной, которая явно может иметь либо нулевое значение, либо нет. Очевидно, PHP распознает эту идею с помощью функции var_dump. Однако я не могу найти ничего более подробного по этому вопросу в документации.
Почему строка, доступ к которой осуществляется через переменную $_POST, может отличаться от строки, доступ к которой осуществляется через php://input ?
Поскольку var-dump определяет разницу между необязательным значением и строкой, почему доступ к данным через $_POST дает необязательное значение вместо строки?
В конечном итоге как мне преобразовать $_POST['jwt'], полученный из $_POST, в обычную строку. Что с ним может быть не так?
Подробнее здесь: https://stackoverflow.com/questions/793 ... ing-in-php
Мобильная версия