Создание post/ get с помощью PHP
Новички в программировании начинают свой путь с изучения переменных php. Практически вся полезная информация для посетителей сайтов находится в переменных, а конструкция страницы в шаблоне.
Программисту достаточно изменить значение переменных и пользователь получит обновленную страницу.
Передача значений переменных – неотъемлемая часть работы программиста, без знаний которых не получится создать динамическую страницу.
Клиенты-браузеры могут отправлять информацию на сервер двумя способами – это один из методов GET или POST. Перед тем как браузер отправит информацию пользователю, он ее кодирует, применяя схему, которая называется кодировкой URL. По данной схемы пары имя/значение объединяются знаком равно, а разные пары разделяются амперсандом:
name1=value1&name2=value2&name3=value3.
Методы get и post – отправка информации на веб-сервер
Как правило, браузер взаимодействует с сервером, применяя один из вышеперечисленных методов HTTP. Они оба передают информацию по-своему и имеют преимущества и недостатки. Остановимся на них подробнее, рассмотрев каждый из них по отдельности и потом сравнив между собой.
Метод GET
Данные в методе GET отправляются в виде параметров URL, представляющихсобойнаборыпарзначений и имен, разделенных амперсандами(&). Пример URL с данными:
http://www.example.com/action.php?name=vasya&age=33
Те части, которые выделенные жирным шрифтом – параметры GET, а те, которые выделены курсивом – значения этих параметров. В URL может быть встроено больше одного набора посредством объединения их с амперсандами (&). Методом GET отправляются лишь простые текстовые данные.
Плюсы и минусы метода GET
- Данные отправленные методом GET отражены в URL-адресе, что позволяет добавить страницу с определенными значениями строки запроса в избранное.
- Имя пользователя и пароль (конфединциальная информация) не может быть передана методом GET. Ведь они будут видны в строке запроса URL и могут храниться в памяти браузера в качестве последующей страницы.
- Метод GET назначает данные для переменной среды серверы, соответственно длина URL ограничена. Так, существует ограничение на количество отправляемых данных.
Для доступа ко всей информации, которая отправляется либо через URL или через специальную PHP HTML-форму с применением method=»get», PHP предоставляет суперглобальную переменную $_GET
<!DOCTYPEhtml>
<htmllang=»en»>
<head>
<title>Пример отправки данных из формы методом GET</title>
</head>
<body>
<?php
if(isset($_GET[«name»])){
echo «<p>Привет, » . $_GET[«name»] . «</p>»;
}
?>
<formmethod=»get» action=»<?phpecho $_SERVER[«PHP_SELF»];?>»>
<labelfor=»inputName»>Имя:</label>
<inputtype=»text» name=»name» id=»inputName»>
<inputtype=»submit» value=»Отправить»>
</form>
</body>
</html>
Метод POST
Метод POST подразумевает отправку данных на сервер в виде пакета в отдельном сообщении со сценарием обработки. При этом данные не будут показаны в URL.
Плюсы и минусы метода POST
- Метод POST более безопасный, так как информация, введенная пользователям не отображаться в URL-адресе или в журналах сервера.
- Предлагается больший лимит на количество передаваемых данных. При этом есть возможность отправки текстовых и двоичных данных.
- Как уже было сказано, отправленные данные методом POST не отображаются в URL-адресе, поэтому с помощью конкретного запроса невозможно добавить страницу в закладки.
<!DOCTYPEhtml>
<htmllang=»en»>
<head>
<title>Пример отправки данных из формы методом POST</title>
</head>
<body>
<?php
if(isset($_POST[«name»])){
echo»<p>Привет, » . $_POST[«name»] .»</p>»;
}
?>
<formmethod=»post»action=»<?phpecho $_SERVER[«PHP_SELF»];?>»>
<labelfor=»inputName»>Имя:</label>
<inputtype=»text»name=»name»id=»inputName»>
<inputtype=»submit»value=»Отправить»>
</form>
</body>
</html>
Переменная $_REQUEST
PHP предоставляет еще одну суперглобальную переменную $_REQUEST, содержащую значения переменных $_GET и $_POST и значения суперглобальной переменной $_COOKIE.
<!DOCTYPEhtml>
<htmllang=»en»>
<head>
<title>Пример работы переменной $_REQUEST</title>
</head>
<body>
<?php
if(isset($_REQUEST[«name»])){
echo»<p>Привет, » . $_REQUEST[«name»] .»</p>»;
}
?>
<formmethod=»post»action=»<?phpecho $_SERVER[«PHP_SELF»];?>»>
<labelfor=»inputName»>Имя:</label>
<inputtype=»text»name=»name»id=»inputName»>
<inputtype=»submit»value=»Отправить»>
</form>
</body>
</html>
Сравнение методов GET и POST
Данные при использовании метода GET передаются посредством добавления к URL-адресу. Так, они будут отображаться, в плане безопасности это плохо. Кроме того максимальный объем передаваемых данных зависит от браузера, а именно от максимально допустимого количества знаков в адресной строке.
Использовав метод POST данные не отобразятся в браузер, поэтому они более защищены и программа, обрабатывающая их более защищена в плане безопасности. При этом объем передаваемых данных почти ничем не ограничен.
Для наглядности приведем сравнение в виде таблицы:
Ситуация | POST | GET |
Фильтр товаров | При повторном посещении страницы пользователю придется заново заполнять форму фильтра. Также страницей с параметрами нельзя будет поделиться с другими, добавить в закладки и вернутся позже без повторного заполнения. | Посетитель получит страницу с необходимыми товарами, сможет добавить их в закладки, поделиться ссылкой с другими и вернутсяна страницу через некоторое время без необходимости повторного заполнения формы.
|
Форма авторизации | Несмотря на то, что данные могут передаваться в незашифрованном виде, их можно увидеть только с помощью специального ПО или через инструменты разработчика. | Нет защиты конфиденциальности данных. Введенный пароль будет доступен в адресной строке веб-обозревателя. Указанный пароль будет отображаться в строке браузера и сохранен в истории посещений. |
Онлайн заявка Оформления заказа Форма обратной | Повторное обращение по конечной ссылке не потребует повторную обработку запроса с заполненными ранее параметрами. | В случае повторного обращения по конечной ссылке на веб-сервере произойдет повторная обработка, к примеру, будет создан повторный заказ, отправлен еще один запрос и так далее.
|
Через гиперссылку | Нет возможности разместить POST в ссылку. | Переход по ссылке с параметрами равнозначен отправке запросе через форму HTML. |
AJAX запросы | Применяются оба метода. Их выбор напрямую зависит от контекста.. |
При выборе способа передачи данных необходимо учитывать вышеперечисленные особенности и остановится на самом подходящем варианте.
Спасибо. Написал свой первый get запрос! Ура!