Первым рассмотрю метод GET. Для начала набросаем код документа:
<html>
<head>
<title>Тестируем форму</title>
</head>
<body>
<form action="get2.php" method="get">
<p>Пример:</p>
<select name="Base" size="3">
<option value="Москва">Москва</option>
<option value="Санкт-Петербург">Санкт-Петербург</option>
</select>
<p><input type="submit" name="submit" value="принять" /></p>
</form>
</body>
</html>
Почему именно «набросаем»? Потому что данный код будет работать, но не соответствует стандартам W3C, а так же не имеет никакого дизайна, и как ещё это назвать, кроме как «наброском»?
Но я продолжу, в этом документе тег form, определяет начало формы, атрибут ACTION – содержит в себе URL-страницы обработчика, куда в после срабатывания выбора будут переданы данные.
Код страницы обработчика может выглядеть так:
<html>
<head>
<title>Тестируем форму 2</title>
</head>
<body>
<p>Ваш выбор: <?php print $_GET['Base']; ?></p>
</body>
</html>
Можете ознакомиться с примером, здесь: «Форма, метод GET».
Я написал «может выглядеть» потому, что на самом деле коды обработчиков бывают, различны, но в моём случае он будет выглядеть вышеописанным способом.
Здесь стоит обратить внимание на адресную строку страницы обработчика, именно поэтому для кодов авторизации метод GET не используется, потому что пароль будет отображён в адресной строке браузера и скорей всего сохранится в истории браузера.
Но если всё так «плохо», для чего тогда пользоваться этим методом? Причину можно найти в «закладках», если бы пользователи свой путь по сайтам начинали всегда с главной страницы, то в этом случае действительно существование метода GET утратило бы всякий смысл, но нет, мы часто делимся с друзьями ссылками и делаем заметки в избранном.
Следующий метод – метод POST, возьмём уже имеющийся код и чуть-чуть переделаем:
<html>
<head>
<title>Тестируем форму</title>
</head>
<body>
<form action="post2.php" method="post">
<p>Пример:</p>
<select name="Base" size="3">
<option value="Москва">Москва</option>
<option value="Санкт-Петербург">Санкт-Петербург</option>
</select>
<p><input type="submit" name="submit" value="принять" /></p>
</form>
</body>
</html>
И соответственно обработчик:
<html>
<head>
<title>Тестируем форму 2</title>
</head>
<body>
<p>Ваш выбор: <?php print $_POST['Base']; ?></p>
</body>
</html>
Можете ознакомиться с примером, здесь: «Форма, метод POST».
Разница, по сути – не существенна, но давайте всё же разберём отличия:
– Метод POST, является более безопасным, чем метод GET;
– Объём передаваемых данных значительно выше, чем при передаче методом GET (если передавать значение 1-2 слов это не так заметно, как если нужно передать значение 40-50 элементов и тогда могут возникнуть сложности в работе браузера);
– Результаты, передаваемые посредством метода POST – не дадут возможности сохранять закладки;
– У метода POST могут возникнуть сложности с брандмауэром, который удаляет данные форм в качестве меры защиты.
В заключении хочу отметить, что помимо массивов $_POST и $_GET, Вы так же можете воспользоваться массивом $_REQUEST, который включает в себя как значения массива $_POST, так и значения массива $_GET.
Читайте так же: генератор хеша md5.