Создание стандарта сети Интернет Web 2.0 позволило пользователю не только принимать информацию, но и активно взаимодействовать с другими пользователями и интернет-сервисами. Для организации такой обратной связи в язык HTML были введены дополнительные теги, позволяющие отправлять на сервер запрашиваемую информацию. Например, это может быть форма регистрации, или форма добавления комментария, или настройка личного аккаунта (страницы социальной сети) и т.п. В данной главе рассмотрим набор тегов, позволяющих организовывать взаимодействие пользователя с сайтом.
6.1. GET и POST-запросы
Для организации взаимодействия пользователя с сетью Интернет, разработчик сайта должен предусмотреть передачу запросов от пользователя сайта на сервер, где расположен данный сайт. Запросы бывают двух видов: GET- и POST-запросы.
GET -запросы
На раннем этапе развития сети Интернет существовали только GET-запросы. Они представляют собой передачу данных непосредственно в адресной строке браузера, имеющих следующий синтаксис:
http://домен/страница?[параметр1=значение1][&параметр2=значение2]...
Здесь набор передаваемых данных на сервер начинаются с символа ‘?’ и разделяются символом ‘&’. Сами данные представляют собой пары
параметр=значение
Например, если требуется передать имя и фамилию пользователя на странице регистрации (например, register.php) сайта mysite.com, то это будет выглядеть так:
http://mysite.com/register.php?fname=Иван&lname=Иванов
Следует обратить внимание, что браузеры устаревших версий могут некорректно воспринимать кириллицу и передача русских букв будет осуществляться неверно. Лучше в GET-запросах передавать исключительно служебную информацию в виде чисел и слов на латинском языке.
Недостатком GET-запросов является ограниченность передаваемых данных. На стороне сервера строка запроса ограничивается некоторым максимальным значением. Например, если максимальный размер запроса может составлять 1024 символа, то все что превышает это значение будет удалено и тогда часть передаваемой информации не будет обработана указанной страницей сайта. Вторым существенным ограничением является возможность передачи строго определенных наборов символов. Например, символы? и & уже зарезервированы и их передавать как значения параметров нельзя. Однако это правило можно обойти, если в строке запроса передавать не сам символ, а его кодовое значение. Для этого используется символ ‘%’, за которым следует код символа, например, так:
http://mysite.com/register.php?fname=%CC%DF%AD%1F%DS&lname=%DD
Здесь кодовые значения указаны в шестнадцатиричном виде с целью экономии длины запроса.
Несмотря на указанные недостатки, создание сайтов без GET-запросов было бы крайне затруднительно. Например, они незаменимы в случаях начальной инициализации страницы сайта для конкретного пользователя, когда в запросе указывается не только сайт и текущая страница, но и его id, как это сделано в социальной сети Вконтакте:
http://vk.com/profile.php?id=12345678
Также GET-запросы часто применяются для проверки корректности email-адреса при регистрации пользователя. В этом случае пользователю на указанный email приходит письмо со ссылкой активации и эта ссылка представляет собой GET-запрос.
POST -запросы
Для решения указанных недостатков GET-запросов были добавлены POST-запросы, позволяющие передавать большие объемы данных в бинарном виде, т.е. без искажений и изменений передаваемых данных. Такие запросы хорошо подходят для загрузки файлов и изображений на сервер. Например, когда пользователь загружает изображение в свой профиль социальной сети, то для этого используются POST-запросы. Более подробно об организации POST-запросов будет сказано ниже.
Этот пост предназначен для объяснения принципов передачи данных в интернете с помощью двух основных методов: GET и POST. Написал я его в качестве дополнения к инструкции по генератору сменного графика работы для тех, кому вряд ли интересны подробности ☺.
Перейдите по следующему адресу (это для наглядного объяснения): http://calendarin.net/calendar.php?year=2016 Обратите внимание на адресную строку браузера: calendarin.net/calendar.php?year=2016 Основной файл называется, за ним следует вопросительный знак (?) и параметр «year» со значением «2016». Так вот, всё, что следует за вопросительным знаком, это и есть GET-запрос. Всё просто. Чтобы передать не один параметр, а несколько, то их нужно разделить амперсандом (&). Пример: calendarin.net/calendar.php?year=2016&display=work-days-and-days-off
Основной файл всё также называется, за ним следует вопросительный знак (?), затем - параметр «year» со значением «2016», затем - амперсанд (&), затем - параметр «display» со значением «work-days-and-days-off».
GET-параметры могут изменяться прямо в адресной строке браузера. Например, изменив значение «2016» на «2017» и нажав клавишу, вы перейдёте к календарю на 2017 год.
Это передача данных скрытым способом (адрес страницы не изменяется); то есть увидеть, что было передано, можно только с помощью программы (скрипта). Например, в следующем инструменте для подсчёта символов в тексте исходные данные передаются методом POST: http://usefulonlinetools.com/free/character-counter.php
Если остались вопросы, комментарии и мой E-mail к вашим услугам.
Кроме метода GET, который мы рассмотрели в предыдущей заметке, существует еще один метод отправки запроса по протоколу HTTP – метод POST. Метод POST тоже очень часто используется на практике.
Если, для того, чтобы обратиться к серверу методом GET, нам достаточно было набрать запрос в URL-адрес, то в методе POST все работает по другому принципу.
Для того, чтобы выполнить этот вид запроса, нам необходимо нажать на кнопку с атрибутом type=»submit», которая расположена на веб-странице. Обратите внимание, что эта кнопка расположена в элементе
Если пользователь введет в текстовое поле какой-либо текст и нажмет на кнопку «Отправить», то на сервер будет отправлена переменная text со значением того содержимого, которое ввел пользователь.
POST и GET запросы простыми словами
Эта переменная будет отправлена методом POST.
Если в форме написать так: