Intereting Posts
$ result = mysql_query () Magento и настраиваемые атрибуты продукта Несколько атрибутов класса в HTML Как выполнить WP_Query с несколькими аргументами? Чтобы сохранить пользовательский класс и как его загрузить в компонент CakePHP? Настройки динамической конфигурации Laravel Ошибка Laravel: метод Illuminate \ View \ View :: __ toString () не должен генерировать исключение PHP конвертирует вложенный массив в единый массив при конкатенации ключей? msvcr110.dll отсутствует при ошибке компьютера при установке PHP Как я могу отправить опубликованные данные, когда пользователь сначала перенаправляется через Paypal? как обрабатывать большой размер запроса на обновление в mysql с laravel Отображение вывода при циклизации в php Magento Admin> Система> Конфигурация> Дополнительно> Система – Неустранимая ошибка Проверьте слово после символа '@' в PHP Как захватить отдельные целые числа из длинной строки

В чем разница между POST и исходным POST в PHP?

У меня есть этот вопрос после прочтения ответа здесь , какая разница вообще?

Можно ли отправить raw POST с помощью html?

Мы можем разделить формы в трех случаях:

  1. Представления с application/x-www-form-urlencoded типа контента application/x-www-form-urlencoded
  2. Представления с контентом типа multipart/form-data
  3. Другие материалы.

В случаях 1 и 3 $HTTP_RAW_POST_DATA содержит исходные данные (за исключением того, что для опции always_populate_raw_post_data установлено значение false , и в этом случае $HTTP_RAW_POST_DATA пуст в случае 1), то есть данные точно как клиент (обычно браузер) отправил его. В случае 1 данные имеют такую ​​форму, как

 key1=value1&key2=value2&key3[]=value3.1&key3[]=value3.2 

PHP автоматически анализирует это, так что $_POST становится:

 $_POST = array( "key1" => "value1", "key2" => "value2", "key3" => array("value3.1", "value3.2"); ) 

Содержимое исходных данных также может быть доступно через вход php://input , даже в случае 1, когда для параметра always_populate_raw_post_data установлено значение false . В частности, file_get_contents("php://input") дает те же данные, что и у $HTTP_RAW_POST_DATA .

В случае 3, в котором данные POST произвольны, $_POST будет пустым массивом, и всегда будет заполняться $HTTP_RAW_POST_DATA .

Случай 2 является особенным. В этом случае PHP будет анализировать данные, а $_POST получит содержимое полей, которые не загружены, но php://input и $HTTP_RAW_POST_DATA будут недоступны.

$HTTP_RAW_POST_DATA будет содержать что-то вроде:

 beans=cheese&spam=eggs&one=two 

PHP разбивает это на вас и запихивает в массив $_POST . Наивно, он делает что-то вроде этого:

 $parts = explode('&', $HTTP_RAW_POST_DATA); foreach ( $parts as $part ) { list($key, $value) = explode('=', $part, 2); $_POST[$key] = $value; } 

Используя JavaScript, который может быть встроен в HTML, вы можете ПОЧТИ что угодно, используя AJAX . Что-то вроде этого:

 var req = new XMLHttpRequest(); req.open('POST', 'http://www.example.com/my_url' true); req.send('any data you want'); 

позволит вам ПОСТУПИТЬ произвольные вещи на веб-сервер.

$ _POST – ассоциативный массив входящих параметров POST. PHP создает это для вас из необработанного HTTP-сообщения. Если вы хотите иметь дело с необработанными данными POST самостоятельно (у вас могут быть некоторые двоичные данные, отправленные в POST), используйте $ HTTP_RAW_POST_DATA.

_POST предполагает, что это application/x-www-form-urlencoded или multipart/form-data . HTTP_RAW_POST_DATA , если заполняется, является исходной строкой. Вы также можете получить доступ к этому с помощью php://input psuedo-url php://input . Вы можете отправлять произвольные данные POST (например, XML, JSON, HTML) с помощью AJAX.