Пятница, 15 Август 2014 00:00

Передача данных через формы.

Давно собирался сделать раздел по PHP, да всё как-то руки не доходили, попробовал дойти ногами – получилось лучше. Итак, рассмотрю передачу данных посредством методов GET и POST на примере листа с формой и страницы обработчика.

Первым рассмотрю метод 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.

Спонсоры: