Перейти к основному содержимому

PHP $_REQUEST

Данные могут попасть в PHP-скрипт из отправленной формы, из строки запроса в URL или из HTTP-куки. $_REQUEST собирает их все в одном месте.

Иначе говоря, эта суперглобальная переменная представляет собой один массив, построенный из содержимого $_GET, $_POST и $_COOKIE.

Как и любая суперглобальная переменная, она встроена в язык, и вы можете использовать её из любой области видимости.

Чтобы прочитать значение, используйте имя поля формы, параметра запроса или куки как ключ в $_REQUEST.

Примечание: Объединять данные GET, POST и COOKIE в одном массиве удобно, но неосторожное использование может привести к уязвимостям. Когда возможно, отдавайте предпочтение более конкретным $_GET, $_POST или $_COOKIE.


Использование $_REQUEST при POST-запросе

Начнём с данных, которые приходят в POST-запросе, и прочитаем их через $_REQUEST.

POST-запрос обычно приходит из HTML-формы.

Такой форме нужны две вещи: атрибут method со значением post и поля ввода с атрибутами name. Имя каждого поля становится ключом, по которому ваш PHP-скрипт находит значение.

Такую форму можно увидеть во фрагменте «HTML-форма» на этой странице.

При нажатии кнопки отправки данные отправляются в PHP-файл, который тег <form> указывает в атрибуте action.

Затем этот файл может получить введённое значение из $_REQUEST, как показано во фрагменте «PHP-файл».

Примечание: Никогда не доверяйте тому, что приходит из суперглобальной переменной, такой как $_REQUEST. Сначала проверяйте и очищайте эти данные, чтобы не оставлять лазейку для атак вроде XSS. Вызов htmlspecialchars(), как в этом коде, - один из способов; функции фильтрации PHP дают более надёжную фильтрацию.

В следующем примере форма и её PHP-код находятся вместе в одном PHP-файле:

POST-запрос с $_REQUEST

Прочитайте поле ввода с помощью $_REQUEST после отправки формы:

Prompt
Напишите PHP-скрипт с HTML-формой, использующей метод post и отправляющей данные самой себе. В форме есть текстовое поле с именем "fname". После отправки получите значение с помощью $_REQUEST, обработайте его функцией htmlspecialchars() и выведите на экран.
Вывод: PHP-скрипт

HTML-форма

Простая форма, у которой указан метод post:

index.php
<html>
<body>

<form method="post" action="demo_request.php">
  Name: <input type="text" name="fname">
  <input type="submit">
</form>

</body>
</html>

PHP-файл

Часть на PHP, которая читает отправленное значение из $_REQUEST:

index.php
<?php
$name = htmlspecialchars($_REQUEST['fname']);
echo $name;
?>

Использование $_REQUEST при GET-запросе

GET-запрос тоже может прийти из формы, если атрибут method её элемента <form> имеет значение get.

Он также может прийти из строки запроса, то есть дополнительной информации, добавленной к URL.

Такая строка запроса есть во фрагменте с HTML-ссылкой на этой странице.

При нажатии на ссылку данные строки запроса передаются в demo_phpfile.php.

В этом файле значения можно прочитать с помощью $_REQUEST, а также с помощью $_GET, который и используется в примере.

GET-запрос с $_REQUEST

PHP-файл demo_phpfile.php:

Prompt
Напишите PHP-скрипт, который с помощью $_GET получает значения "subject" и "web" из строки запроса URL и выводит сообщение с использованием этих значений.
Вывод: PHP-скрипт

HTML-ссылка со строкой запроса

Ссылка, которая передаёт два параметра в строке запроса:

index.php
<html>
<body>

<a href="demo_phpfile.php?subject=PHP&web=PromptCookbook">Test $GET</a>

</body>
</html>