Files
php-doc-ru/reference/network/functions/request-parse-body.xml
2024-11-28 19:33:11 +03:00

155 lines
6.0 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 4bf789e981af0836c41daa16e57ef86c21497faa Maintainer: malferov Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.request-parse-body" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>request_parse_body</refname>
<refpurpose>Считывает и разбирает тело запроса, а затем возвращает результат</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>array</type><methodname>request_parse_body</methodname>
<methodparam choice="opt"><type class="union"><type>array</type><type>null</type></type><parameter>options</parameter><initializer>&null;</initializer></methodparam>
</methodsynopsis>
<simpara>
Функция считывает тело запроса и разбирает его с учётом типа содержимого, который указали
в заголовке <literal>Content-Type</literal>. Пока поддерживается два типа
содержимого:
</simpara>
<itemizedlist>
<listitem>
<simpara>
<literal>application/x-www-form-urlencoded</literal>
</simpara>
</listitem>
<listitem>
<simpara>
<literal>multipart/form-data</literal>
</simpara>
</listitem>
</itemizedlist>
<simpara>
Главное назначение функции — разбирать содержимое тела, которое закодировали
в формате <literal>multipart/form-data</literal>, в запросах с HTTP-глаголами кроме
<literal>POST</literal>, которые не заполняют суперглобальные массивы
<varname>$_POST</varname> и <varname>$_FILES</varname> автоматически.
</simpara>
<caution>
<simpara>
Функция <function>request_parse_body</function> считывает тело запроса
без буферизации в потоке <literal>php://input</literal>.
</simpara>
</caution>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<variablelist>
<varlistentry>
<term><parameter>options</parameter></term>
<listitem>
<simpara>
Параметр <parameter>options</parameter> принимает ассоциативный массив с настройками для разбора,
которые переопределяют следующие глобальные директивы файла &php.ini;:
</simpara>
<itemizedlist>
<listitem><simpara><literal>max_file_uploads</literal></simpara></listitem>
<listitem><simpara><literal>max_input_vars</literal></simpara></listitem>
<listitem><simpara><literal>max_multipart_body_parts</literal></simpara></listitem>
<listitem><simpara><literal>post_max_size</literal></simpara></listitem>
<listitem><simpara><literal>upload_max_filesize</literal></simpara></listitem>
</itemizedlist>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<simpara>
Функция <function>request_parse_body</function> возвращает пару массивов:
массив в индексе <literal>0</literal> эквивалентен суперглобальному массиву <varname>$_POST</varname>,
а массив в индексе <literal>1</literal> — суперглобальному массиву <varname>$_FILES</varname>.
</simpara>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<simpara>
Функция выбрасывает исключение <exceptionname>RequestParseBodyException</exceptionname>,
когда тело запроса не соответствует формату данных
заголовка <literal>Content-Type</literal>.
</simpara>
<simpara>
Функция выбрасывает ошибку <exceptionname>ValueError</exceptionname>,
когда аргумент <parameter>options</parameter> содержит недопустимые ключи
или недопустимые значения ключей.
</simpara>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<example xml:id="function.request-parse-body.example.basic">
<title>Пример разбора тела запроса функцией <function>request_parse_body</function></title>
<programlisting role="php">
<![CDATA[
<?php
// Разбор запроса и сохранение результата в суперглобальных массивах $_POST и $_FILES
[$_POST, $_FILES] = request_parse_body();
// Вывод содержимого файла, который передали
echo file_get_contents($_FILES['file_name']['tmp_name']);
?>
]]>
</programlisting>
</example>
<example xml:id="function.request-parse-body.example.options">
<title>Пример разбора тела запроса функцией <function>request_parse_body</function> с модифицированными настройками</title>
<programlisting role="php">
<![CDATA[
<?php
// form.php
assert_logged_in();
// Разрешение большего размера загрузки только для этой формы
[$_POST, $_FILES] = request_parse_body([
'post_max_size' => '10M',
'upload_max_filesize' => '10M',
]);
// Обработка файлов, которые загрузили...
?>
]]>
</programlisting>
</example>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->