Метод публикации работает в необработанном виде, но не в POSTMAN с кодировкой x-www-form-urlencoded

Это может быть глупо, но я надеюсь, что вы, ребята, могли бы просветить меня, почему это работает

Изображение: POST с использованием RAW Но использование x-www-form-urlencoded делает все значение нулевым.

Изображение: POST с использованием URL-адреса x-www-form

вот сторона php

<?php
// required headers
header("Access-Control-Allow-Origin: http://localhost/mediapp/");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: POST");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");

// files needed to connect to database
include_once 'config/database.php';
include_once 'Objects/user.php';

// get database connection
$database = new Database();
$db = $database->getConnection();

// instantiate user object
$user = new User($db);

// get posted data
$data = json_decode(file_get_contents("php://input"));

Я также попытался изменить тип контента, но результаты остались прежними. Я неправильно использую POSTMAN, мне нужно что-то изменить на стороне php? Мне нужно, чтобы он также работал с x-www-form-url-encoded

FWIW: stackoverflow.com/questions/26723467/…

ficuscr 28.12.2018 07:49

Ваша форма не отправляет json. Попробуйте $data = $_POST

billynoah 28.12.2018 08:08

Чтобы это работало, запрос должен содержать Content-type: application/json вместо Content-type: aplication/x-www-form-url-encoded.

Salman A 28.12.2018 08:23
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
2 663
1

Ответы 1

x-www-form-urlencoded отправит тело как

firstname=mikey&lastname=dalisay

вот почему json_decode() возвращает null, используйте parse_str, чтобы преобразовать его в объект PHP

parse_str(file_get_contents("php://input"), $data);
var_dump($data);
echo $data['firstname'];

если вы хотите принять как raw, так и x-www-form-urlencoded, вы можете написать как

$reqBody = file_get_contents("php://input");
$data = json_decode($reqBody);
if (!$data){
  parse_str($reqBody, $data);
}

Вы можете просто проверить заголовок типа контента из запроса, а затем вызвать json_decode или parse_str в зависимости от типа контента или выдать ошибку, если встречается какой-либо другой тип контента.

Salman A 28.12.2018 08:32

по-прежнему возвращает ноль

jtyg 28.12.2018 09:27

@jtyg это null, когда вы печатаете $data или ответ из базы данных?

ewwink 29.12.2018 10:39

Другие вопросы по теме