Веб-браузер связывается с сервером, как правило, с помощью одного из двух HTTP-методов (протокола передачи гипертекста) — GET и POST. Оба метода передают информацию по-разному и имеют разные преимущества и недостатки, как описано ниже.
PHP-метод GET
В методе GET данные отправляются в виде параметров URL, которые обычно представляют собой строки пар имени и значения, разделенные амперсандами (&
). В целом URL-адрес с данными GET будет выглядеть так: http://www.example.com/action.php?name=john&age=24
Полужирным шрифтом в URL-адресе выделены параметры GET, а выделенными курсивом — значения этих параметров. В URL-адрес можно встроить более одного parameter=value
, объединив их с помощью амперсанда (&
). С помощью метода GET можно отправлять только простые текстовые данные.
Преимущества и недостатки использования метода GET
- Поскольку данные, отправленные методом GET, отображаются в URL-адресе, можно добавить страницу в закладки с определенными значениями строки запроса.
- Метод GET не подходит для передачи конфиденциальной информации, такой как имя пользователя и пароль, поскольку они видны в строке запроса URL, а также потенциально хранятся в памяти браузера клиента в качестве посещенной страницы.
- Поскольку метод GET назначает данные переменной среды сервера, длина URL-адреса ограничена, т.е. существует ограничение на отправку общих данных.
PHP предоставляет суперглобальную переменную $_GET
для доступа ко всей информации, отправляемой либо через URL-адрес, либо через HTML-форму с использованием method="get"
.
<!DOCTYPE html>
<html lang="en">
<head>
<title>Example of PHP GET method</title>
</head>
<body>
<?php
if(isset($_GET["name"])){
echo "<p>Hi, " . $_GET["name"] . "</p>";
}
?>
<form method="get" action="<?php echo $_SERVER["PHP_SELF"];?>">
<label for="inputName">Name:</label>
<input type="text" name="name" id="inputName">
<input type="submit" value="Submit">
</form>
</body>
PHP-метод POST
В методе POST данные отправляются на сервер в виде пакета в отдельном сообщении со скриптом обработки. Данные, отправленные с помощью метода POST, не будут отображаться в URL-адресе.
Преимущества и недостатки использования метода POST
- Он более безопасен, чем GET, поскольку введенная пользователем информация никогда не отображается в строке запроса URL или в журналах сервера.
- Существует гораздо больший лимит на объем передаваемых данных; с помощью POST можно отправлять как текстовые, так и двоичные данные (загрузка файла).
- Поскольку данные, отправленные методом POST, не отображаются в URL-адресе, невозможно добавить страницу в закладки с помощью определенного запроса.
Как и $_GET
, PHP предоставляет другую суперглобальную переменную $_POST
для доступа ко всей информации, отправляемой методом POST или отправляемой через HTML-форму с помощью method="post"
.
<!DOCTYPE html>
<html lang="en">
<head>
<title>Example of PHP POST method</title>
</head>
<body>
<?php
if(isset($_POST["name"])){
echo "<p>Hi, " . $_POST["name"] . "</p>";
}
?>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
<label for="inputName">Name:</label>
<input type="text" name="name" id="inputName">
<input type="submit" value="Submit">
</form>
</body>
Переменная $ _REQUEST
PHP предоставляет еще одну суперглобальную переменную $_REQUEST
, которая содержит значения переменных $_GET
и $_POST
, а также значения суперглобальной переменной $_COOKIE
.
<!DOCTYPE html>
<html lang="en">
<head>
<title>Example of PHP $_REQUEST variable</title>
</head>
<body>
<?php
if(isset($_REQUEST["name"])){
echo "<p>Hi, " . $_REQUEST["name"] . "</p>";
}
?>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
<label for="inputName">Name:</label>
<input type="text" name="name" id="inputName">
<input type="submit" value="Submit">
</form>
</body>
Вы узнаете больше о файлах cookie и валидации форм в следующих разделах.
Суперглобальные переменные $_GET
, $_POST
и $_REQUEST
— это встроенные переменные, которые всегда доступны во всех областях скрипта.