Переменная $_POST из запроса содержит необязательное значение вместо строки в PHP [закрыто]Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Переменная $_POST из запроса содержит необязательное значение вместо строки в PHP [закрыто]

Сообщение Anonymous »

Отредактированный вопрос
Сценарий использования: пользователь (клиент) отправляет запрос на сервер, на котором работает PHP. Я пытаюсь написать код PHP на сервере, например. конечная точка API для обработки запроса.
У меня есть рабочий PHP-код, который извлекает веб-токен Java (в виде строки) из запроса 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"
Обратите внимание на префикс:

string(414)

добавлен var_dump. Если я просто отображаю переменную $jwt, она отображает строку сама по себе без этого префикса.
Эта строка веб-токена Java может быть успешно декодирована для аутентификации пользователя.
Теперь мне нужно написать код для другой конечной точки для клиентских запросов, которая позволит клиенту отправлять файл изображения и метаданные. В этом случае для поддержки передачи файлов пользователь/клиент должен указать в запросе тип контента 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 добавляет префикс

Необязательно (414)

. Если я просто отображаю значение, то оно идентично строке в первом случае.
Хотя эта строка при отображении выглядит идентичной приведенной выше, я не могу декодировать эту переменную. Var_dump предполагает, что хотя строки и повторяют одно и то же, они разные. Вторая версия является «дополнительной». Для тех, кто не знаком с термином «необязательный», он используется во многих языках программирования для обозначения переменной, которая явно может иметь либо нулевое значение, либо нет. Очевидно, PHP распознает эту идею с помощью функции var_dump. Однако я не могу найти ничего подробного по этому вопросу в документации.
Почему строка, доступ к которой осуществляется через переменную $_POST, отличается от строки, доступ к которой осуществляется через php://input?
Поскольку var-dump определяет разницу между необязательным параметром и строкой, почему доступ к данным через $_POST дает необязательный параметр вместо строки?
В конечном итоге, как мне преобразовать $_POST['jwt'] получен из $_POST в обычную строку. Что с этим может быть не так?
Заранее спасибо за любые предложения.

Подробнее здесь: https://stackoverflow.com/questions/793 ... ing-in-php
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»