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 после отправки формы:
Вывод: PHP-скрипт
<html>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Имя: <input type="text" name="fname">
<input type="submit">
</form>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = htmlspecialchars($_REQUEST['fname']);
if (empty($name)) {
echo "Имя не указано";
} else {
echo $name;
}
}
?>
</body>
</html>
HTML-форма
Простая форма, у которой указан метод post:
<html>
<body>
<form method="post" action="demo_request.php">
Name: <input type="text" name="fname">
<input type="submit">
</form>
</body>
</html>
PHP-файл
Часть на PHP, которая читает отправленное значение из $_REQUEST:
<?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:
Вывод: PHP-скрипт
<html>
<body>
<?php
$subject = htmlspecialchars($_GET['subject']);
$web = htmlspecialchars($_GET['web']);
echo "Изучайте $subject на $web.";
?>
</body>
</html>
HTML-ссылка со строкой запроса
Ссылка, которая передаёт два параметра в строке запроса:
<html>
<body>
<a href="demo_phpfile.php?subject=PHP&web=PromptCookbook">Test $GET</a>
</body>
</html>