Методы GET и POST в PHP

Методы GET и POST в PHP

В этом руководстве вы узнаете, как отправлять информацию на сервер с помощью методов HTTP GET и POST и как получать эту информацию на сервере.

Методы отправки информации на сервер

Веб-браузер взаимодействует с сервером, как правило, используя один из двух методов HTTP (HyperText Transfer Protocol) - GET и POST. Оба метода передают информацию по-разному и имеют разные преимущества и недостатки.

Метод GET

В методе GET данные отправляются в виде параметров URL, которые обычно представляют собой наборы пар имен и значений, разделенных амперсандами (&). В общем, URL с данными GET будет выглядеть так:

http://www.example.com/action.php?name=vasya&age=33

Части, выделенные жирным шрифтом в URL, являются параметрами GET, а части, выделенные курсивом, являются значениями этих параметров. Более одного набора параметр=значение может быть встроено в URL путем объединения их с амперсандами (&). Методом GET можно отправлять только простые текстовые данные.

Преимущества и недостатки использования метода GET

  • Поскольку данные, отправленные методом GET, отображаются в URL-адресе, можно добавить в избранное страницу с определенными значениями строки запроса.
  • Метод GET не подходит для передачи конфиденциальной информации, такой как имя пользователя и пароль, потому что они полностью видны в строке запроса URL-адреса, а также потенциально могут храниться в памяти браузера клиента в качестве посещенной страницы.
  • Поскольку метод GET назначает данные для переменной среды сервера, длина URL-адреса ограничена. Таким образом, существует ограничение на общее количество отправляемых данных.

PHP предоставляет суперглобальную переменную $_GET для доступа ко всей информации, отправляемой либо через URL, либо через HTML-форму с использованием method="get".

<!DOCTYPE html>
<html lang="en">
<head>
<title>Пример отправки данных из формы методом GET</title>
</head>
<body>
<?php
  if(isset($_GET["name"])){
  echo "<p>Привет, " . $_GET["name"] . "</p>";
}
?>
<form method="get" action="<?php echo $_SERVER["PHP_SELF"];?>">
  <label for="inputName">Имя:</label>
  <input type="text" name="name" id="inputName">
  <input type="submit" value="Отправить">
</form>
</body>
</html>

Метод POST

В методе POST данные отправляются на сервер в виде пакета в отдельном сообщении со сценарием обработки. Данные, отправленные методом POST, не будут видны в URL.

Преимущества и недостатки использования метода POST

  • Это более безопасно, чем GET, потому что введенная пользователем информация никогда не отображается в строке запроса URL или в журналах сервера.
  • Существует гораздо больший лимит на количество данных, которые можно передать, и можно отправлять текстовые данные, а также двоичные данные (загрузка файла) с помощью POST.
  • Поскольку данные, отправленные методом POST, не видны в URL-адресе, невозможно добавить страницу в закладки с помощью конкретного запроса.

Как и $_GET, PHP предоставляет еще одну суперглобальную переменную $_POST для доступа ко всей информации, отправляемой методом post или отправляемой через форму HTML с использованием method="post".

<!DOCTYPE html>
<html lang="en">
<head>
<title>Пример отправки данных из формы методом POST</title>
</head>
<body>
<?php
  if(isset($_POST["name"])){
  echo "<p>Привет, " . $_POST["name"] . "</p>";
}
?>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
  <label for="inputName">Имя:</label>
  <input type="text" name="name" id="inputName">
  <input type="submit" value="Отправить">
</form>
</body>
</html>

Переменная $_REQUEST

PHP предоставляет еще одну суперглобальную переменную $_REQUEST, которая содержит значения переменных $_GET и $_POST, а также значения суперглобальной переменной $_COOKIE.

<!DOCTYPE html>
<html lang="en">
<head>
<title>Пример работы переменной $_REQUEST</title>
</head>
<body>
<?php
  if(isset($_REQUEST["name"])){
  echo "<p>Привет, " . $_REQUEST["name"] . "</p>";
}
?>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
  <label for="inputName">Имя:</label>
  <input type="text" name="name" id="inputName">
  <input type="submit" value="Отправить">
</form>
</body>
</html>

Оставьте первый комментарий

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*