Значение атрибута method
не зависит от регистра.
Различают два метода — get и post.
Get
Этот метод является одним из самых распространенных и предназначен для получения
требуемой информации и передачи данных в адресной строке. Пары «имя=значение»
присоединяются в этом случае к адресу после вопросительного знака и разделяются
между собой амперсандом (символ &). Удобство использования метода get
заключается в том, что адрес со всеми параметрами можно использовать неоднократно,
сохранив его, например, в закладки браузера, а также менять
значения параметров прямо в адресной строке.
post
Метод post посылает на сервер данные в запросе браузера. Это позволяет отправлять
большее количество данных, чем доступно методу get, поскольку у него установлено
ограничение в 4 Кб. Большие объемы данных используются в форумах, почтовых
службах, заполнении базы данных, при пересылке файлов и др.
Обязательный атрибут
Значение по умолчанию
HTML5
IE
Cr
Op
Sa
Fx
Тег FORM, атрибут method
Этот пост предназначен для объяснения принципов передачи данных в интернете с помощью двух основных методов: 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.
Если в форме написать так:
Немного прокомментирую созданную форму. Формы создаются тегом form
. Поля формы создаются тегами input
, select
, textarea
(подробнее можно почитать ). В теге form
в атрибуте action
указывается URL-адрес скрипта, который получит данные формы. В нашем случае мы указали уже существующий у нас файл script.php
. Атрибут method
задает метод отправки данных. Мы указали метод GET
. Теперь мы знаем, какому файлу будут переданы данные формы, и каким способом, осталось разобраться, где их там искать?! Данные этой формы будут переданы веб-ресурсу браузером путем добавления их к URL-адресу: сначала будет знак вопроса (?
), затем будут представлены параметры разделенные амперсантом (&
). Название параметра будет браться из атрибута name
, которое должно быть прописано у любого поля формы. Значение параметра будет зависеть от типа поля. Если поле является текстовым, то значением будет введенный пользователем текст. Если же поле будет представлять собой список, группу переключателей или флажков, то значением параметра будет значение атрибута value
выбранного элемента. Поясню на примере нашей формы. Если пользователь введет в поле input
число 10, то названием параметра будет num
(значение атрибута name
тега input
), а значением будет 10 (введенное пользователем число). Соответственно браузер сформирует пару "num=10
". Если пользователь из списка выберет вариант "Да", то названием параметра будет type
(значение атрибута name
тега select
), а значением будет yes
(значение атрибута value
тега option
). Соответственно браузер сформирует пару "type=yes
". Теперь эту форму разместим на странице forma.php
.
Форма для передачи данных методом GET и PHP
Введите в поля формы какие-либо значения и нажмите кнопку "Отправить". После нажатия кнопки браузер откроет другую страницу (script.php
), и в окне браузера будут отображены данные, которые вы ввели. Я думаю понятно почему: браузер передаст данные сценарию script.php
, и в скрипте эти данные будут обработаны и выведены на экран. Метод POST
Теперь давайте рассмотрим, как работает метод POST
. Для отправки данных методом POST
нужно использовать HTML
-формы. Как мы помним, что за способ отправки данных формы отвечает атрибут method
тега form
. Поэтому нужно в атрибуте method
тега form
указать значение POST
. В остальном форма может быть та же, как и для метода GET
. Изменим нашу форму, которую мы уже использовали для передачи данных способом GET
, для передачи методом POST
.
Как видите, форма осталась та же за исключением атрибутов method
и action
. Теперь данные будут передаваться сценарию script_post.php
. Поместим нашу форму на странице forma_post.php
.
Форма для передачи данных методом POST и PHP
Теперь надо написать сценарий, который будет обрабатывать данные нашей формы. Для получения в скрипте данных переданным методом POST
нужно использовать встроенный массив $_POST
. Ключами этого массива будут названия параметров. В нашем случае нужно использовать $_POST["num"], $_POST["type"],$_POST["v"]
. Эти элементы массива и будут содержать значения переданных данных. Как видите отличие от использования способа GET
, выражается лишь в использовании массива $_POST
. Поэтому нам не составит труда написать файл script_post.php
:
Теперь откройте файл forma_post.php
в браузере. Введите какие-нибудь данные в поля формы и нажмите кнопочку "Отправить". Сейчас, наверное, вы заметили отличие метода POST
от GET
- в адресной строке браузера не появились данные формы. Данные методом POST
нельзя передать через адресную строку браузера. Это существенное отличие нужно запомнить. В PHP
в независимости, каким способом были отправлены данные - методом POST
или методом GET
- получить данные можно используя массив $_REQUEST
.Сравнение методов GET и POST
При использовании метода GET
данные передаются путем добавления к URL-адресу. Таким образом, они будут видны пользователю, что с точки зрения безопасности не всегда хорошо. Также максимальный объем передаваемых данных будет зависеть от браузера - от максимально-допустимого количества символов адресной строке браузера. При использовании метода POST
данные не будут видны пользователю (не отображаются в адресной строке браузера). И поэтому они более защищены, а, следовательно, и программа обрабатывающая эти данные более защищена в плане безопасности. Также объем передаваемых данных практически ни чем не ограничен. Выбирая способ передачи данных нужно учитывать приведенные особенности и останавливаться на наиболее приемлемом методе.