Вернуться на страницу трюков

Формы: методы POST & GET

Формы – это первый и один из главных элементов взаимодействия пользования с Вашим сайтом. Именно через форму пользователь (не берём во внимание хакеров) передаёт параметры (строки) непосредственно в Ваш код, скрипт-обработчик. Это первое место, где любой зложелатель пытается напакостить и испоганить Ваш прекрасный сайт.

Прежде всего стоит начать разговор именно о методах передачи данных через форму. Их всего 2: POST и GET :
<form method="post">
<form method="get">

Каждый из методов передачи данных имеет как свои плюсы, так и свои минусы, поэтому в зависимости от необходимости используют либо тот, либо другой способ. Нельзя сказать, что какой-то из способов лучше.

GET-данные передаются открыто, непосредственно в браузной строке. (index.php?page=title&name=armed), где первая часть до символа "?" есть полный путь к файлу, а остальная часть разделяется на блоки "имя=значение", соединяющее несколько блоков символом "&". То есть в данном случае мы получили 2 глобальных переменных $_GET['page'] и $_GET['name'], их содержанием будет "title" и "armed" сообтветственно. Представляя собой такой открытый вид можно в скрипт передавать свои данные, обходя любые формы.
POST-данные передаются скрыто через заголовки То есть в адресной строке будет ссылка такого вида (index.php), при этом данные будут переданы.

Никто не заставляет пользоваться один из этих методов, поэтому возможно указать сразу оба таким образом:
<form method="post" action="index.php?page=sendmail">
<input type="text" name="fio">
<input type="text" name="email">
<input type="submit" name="send" value="Отправить письмо">


В таком случае скрипт получит следующие глобальные переменные:
<?php
$_POST['fio'] = 'value';
$_POST['email'] = 'value';
$_POST['send'] = 'Отправить письмо';
$_GET['page'] = 'sendmail';

* где value – значение, которое введёт пользователь в форму.

Теперь поговорим про особенности:
Метод GET передаётся в браузной строке, а в отличии от скрытых заголовков, GET не резиновый, а значит передать можно определённое число символов.
Каждый браузер по своему воспринимает число символов, так например ИЕ7 может принять до 2000 символов всего, старые версии оперы и мозиллы 4000+, последние версии мозиллы и гугл.хрома не ограничивают длину передаваемых данных (по тестам других студий до 100 000 символов спокойно принимал. Но для того, чтобы сайт правильно функционировал, необходимо проектировать сразу под все браузеры, а значит рассчитывать стоит на максимальную длину именно из самых маленьких, а именно исходя из ИЕ, поэтому я настоятельно не рекомендую использовать передачи данных из textarea или огромного пакета данных именно через метод GET.
Метод POST не устанавливает ограничения, а значит, если мы пишем новости, темы, длинные письма – то лучше пользоваться именно им.
Так же преимуществами метода POST являются то, что им, в отличии от GET, можно передавать файлы на сервер.
Преимуществами метода GET есть то, что данные передаются в адресной строке, и конкретная страница уже имеет свой физический вид. Допустим, имея ссылку такого вида:
http://www.google.ru/search?q=%D0%9F%D0%B8%D0%B2%D0%BE&hl=ru&newwindow=1&prmd=ivnsrl&ei=DI9VTbSzK8r0sgazhcDrDA&start=20&sa=N

Теперь перейдя по той ссылке мы попадём на третью страницу Гугла поиска по ключевому слову «Пиво». Помимо обычного удобства пользования прямой ссылки для пользователя, мы имеем фиксированную страницу с уникальным контентом: http://creative-tm.com/index.php?page=contacts – будет открыта страница контактов. Вот один из примеров на проверку валидации страницы:
http://validator.w3.org/check?uri=http%3A%2F%2Ftigersun.com.ua
Методом GET мы передали имя страницы, которую необходимо проверить в браузере.
Физическое существование странице – шаг к успеху в раскрутке сайта для поисковых систем, так называемом СЕО. Чем больше сайт имеет страниц, контент которых уникален для простор интернета – тем выше его популярность и позиция в поиске.

Стоит заметить, что запросы GET считаются идемпотентными, с теоретической стороны, и предусматривают многократное повторение одно и того же запроса, которое приводит к формированию к одинаковому или почти запросу, что позволяет результат такого запроса кешировать как браузером, так и на стороне сервера.
Главная БАЗОВЫЙ КУРС ПЕРВЫЙ УРОВЕНЬ программирования ВТОРОЙ УРОВЕНЬ верстки ВТОРОЙ УРОВЕНЬ программирования Начать обучение Запуск проекта Мелкие трюки Делимся практикой трудоустройства Проверь свои знания Задачи по PHP MySQL Блог Отзывы