В этом руководстве вы узнаете, как отправлять информацию на сервер с помощью методов 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>
Оставить комментарий