Отправляет email-рассылки с помощью сервиса Sendsay

PHP за чашкой кофе

  Все выпуски  

PHP за чашкой кофе Чашечка третья — введите своё имя


Информационный Канал Subscribe.Ru

PHP за чашкой кофе

Чашечка третья — введите своё имя

PHP за чашкой кофе

Здравствуйте!

Недавно нашу рассылку перевели в категорию «Серебряные», что привлекло огромное количество подписчиков в рассылку. Для вновь подписавшихся хочу сказать, что рассылка «PHP за чашкой кофе» подходит в первую очередь тем, кто впервые сталкивается с понятием PHP или плохо умеет в нём работать. Если Вы уже умеете работать в PHP, и решили повысить квалификацию, то вряд ли рассылка повысит Ваш уровень, так как я рассказываю о PHP последовательно, начиная с простейших тем, которые для Вас уже известны. Если же Вы относитесь к людям, которые желают изучить PHP, то внимательно ознакомьтесь с первыми двумя выпусками рассылки.

В этот раз рассылка вышла несколько позже обычного. Прошу меня простить за нерасторопность. Обещаю исправиться в самое ближайшее время.

Если помните, в прошлой чашечке мы разобрались с переменными и действиями с ними. А сегодня Вы узнаете, как можно получить эти переменные от пользователя.

HTML-формы

В языке HTML существуют такие элементы, как <form> и <input>. Первый из них предназначен для создания так называемой «формы», то есть специального элемента, который может содержать в себе различные элементы — текстовые поля, флажки, кнопки. Пользователь как-либо меняет значения элементов этих форм и отправляет результат своей работы на сервер.

Именно формы и представляют собой то, что поможет нам получать данные от пользователей. Содержимым любой формы являются элементы <input>, <select> и некоторые другие. Краткая аннотация к типам элементов представлена в таблице 1.

ЭлементОписаниеПримерВнешний вид
input type=textСоздаёт текстовое поле. Возможные параметры:
name – имя поля
value – значение по-умолчанию
maxlength – максимальная длина текста
<input type="text" name="UserName" value="Введите своё имя" maxlength="25">
input type=passwordСоздаёт поле пароля. Возможные параметры: те же, что и у input type=text<input type="password" name="UserPass" value="12345" maxlength="10">
input type=buttonСоздаёт кнопку. Возможные параметры: те же, что и у input type=text, кроме maxlength<input type="button" name="infoButton" value="Нажми меня">
input type=submitСоздаёт кнопку, при нажатии на которую данные и формы отправляются скрипту-обработчику. Возможные параметры: те же, что и у input type=button<input type="submit" name="sendButton" value="Отправить">
input type=hiddenСоздаёт скрытое поле, значение из которого просто передаётся обработчику. Как правило, пользователь не может повлиять на это значение.<input type="hidden" name="hiddenField" value="Значение скрытого поля">Вы ничего не увидите

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

Форма

Для обозначения формы служит HTML-тег <form>. Вкратце напомню о его параметрах:

Пример 1. Внешний вид тега <form>:
<form action="скрипт" method="метод">
Здесь идёт содержимое формы
</form>
  • Скрипт — в нашем случае PHP-скрипт, который будет обрабатывать содержимое формы.
  • Метод — вид передачи данных скрипту-обработчику

Методы передачи данных

Всего существует два метода передачи данных от формы к обработчику. Эти методы называются GET и POST. В чём между ними различия? Различие очень простое. Посмотрите на такой код:

Пример 2. Форма запроса Яндекса:
<form method="get"
action="http://www.yandex.ru/yandsearch">
 <input type="hidden" name="rpt" value="rad">
 <input type="text" name="text" size="50" value="" maxlength="160">
 <input type="submit" value="Найти!">
</form>

Это код формы поиска с сайта ya.ru. Во-первых о форме: Вы видите, что установлен метод GET, а файл, который будет обрабатывать данные из формы — http://www.yandex.ru/yandsearch.

Теперь об элементах формы: первый input имеет тип "hidden" и никак не отображается. Его имя — rpt, а значение — rad. Второе поле input является, пожалуй, самым важным элементом формы. Это поле ввода строки поиска. Его имя — text, значение по-умолчанию — пустое. Максимальная длина текста составляет 160 символов. И третий элемент формы — это кнопка-submit, которая просто отправляет содержимое формы скрипту-обработчику (посмотрите ещё раз — какой у него URL).

Когда Вы нажмёте на кнопку «Найти!» браузер перешлёт Вас на такой URL: http://www.yandex.ru/yandsearch?rpt=rad&text=PHP. Заметьте, что он состоит из адреса скрипта-обработчика (http://www.yandex.ru/yandsearch) и из специальных данных, находящихся после вопросительного знака (?rpt=rad&text=PHP). Эти данные и являются GET запросом. То есть всё, что мы указали в форме при отправке вписывается прямо после адреса обработчика. Причём, чтобы отделить адрес обработчика от параметров используется знак вопроса (?), а чтобы отделить один параметр от другого взят амперсанд (&). Полный разбор URL:

  • http://www.yandex.ru/yandsearch
  • ?
  • rpt=rad
  • &
  • text=PHP

И есть другой метод отправки данных. Он называется POST. Разница между GET и POST состоит в том, что если в методе GET параметры указываются прямо в адресе вызываемого скрипта, то в методе POST все эти данные будут отосланы отдельно по каналам электронной почты. И получается, что если в методе GET у нас получился адрес http://www.yandex.ru/yandsearch?rpt=rad&text=PHP, то в методе POST получится http://www.yandex.ru/yandsearch, а данные из формы будут отосланы отдельно.

А что же получится?

Ну вот, с тем как передаются данные мы разобрались. Осталось разобраться с тем, в каком виде мы эти данные получим. И в этом плане разработчики PHP пошли нам навстречу.

Дело в том, что при получении данных из формы PHP создаёт одноимённые переменные, которые Вы можете сразу же использовать. Посмотрите на пример с поисковой формой (пример 2). Если в поле action тега <form>, вместо http://www.yandex.ru/yandsearch указать какой-нибудь PHP-скрипт, то, когда пользователь заполнит форму и нажмёт кнопку «Найти!», запустится этот PHP-скрипт, в котором уже будут существовать две переменные: $rpt="rad" и $text="текст, который пользователь ввёл". Вот так всё просто и легко.

Чтобы проверить это создайте в сайте «php» (который мы сделали в прошлом выпуске рассылки) файл cup3.html, в который впишите такой код:

Пример 3. Код файла cup.html:
<html><body>
<h1>Проверяем метод GET:</h1>
<form action="cup3.php" method="get">
Ваше имя: <input type="text" name="userName" maxlength="40">
<input type="hidden" name="hideField" value="method GET used">
<input type="submit" value="Проверить">
</form>
<hr>
<h1>Проверяем метод POST:</h1>
<form action="cup3_post.php" method="post">
Ваше имя: <input type="text" name="userName_post" maxlength="40">
<input type="hidden" name="hideField_post" value="method POST used">
<input type="submit" value="Проверить">
</form>
</body></html>

Как Вы видите, в документе есть две формы. Одна из них отправляет данные методом GET скрипту cup3.php, а вторая — методом POST скрипту cup3_post.php.

Теперь создайте файл с именем cup3.php и впишите такой код:

Пример 4. Код файла cup3.php
<html><body>
<h1>Проверка метода GET:</h1>
<?php
// сейчас PHP-скрипту «известны» значения переменных из формы
// эти значения он и выводит
//
echo ("Здравствуйте, " . $userName);
echo (
"<hr>");
echo (
"Значение скрытого поля hideField равно " . $hideField);
?> </body></html>

Теперь создайте файл с именем cup3_post.php (им мы проверим правильность передачи переменных методом POST) и впишите такой код:

Пример 5. Код файла cup3_post.php
<html><body>
<h1>Проверка метода POST:</h1>
<?php
// сейчас PHP-скрипту «известны» значения переменных из формы
// они были получены методом POST, но используются также, как при методе GET
//
echo ("Здравствуйте, " . $userName_post);
echo (
"<hr>");
echo (
"Значение скрытого поля hideField_post равно " . $hideField_post);
?> </body></html>

Проверьте, правильно ли работают скрипты, и всё ли выводится так, как и должно.

Пару слов об использовании каждого из методов

Должен сказать, что каждый метод стоит использовать в своей ситуации. Метод GET чаще используется при передаче от пользователя небольшой порции данных.

Другое дело — если пользователь должен ввести, например, большой текст (допустим, написать в текстовом поле <textarea> своё резюме). Тогда лучше использовать метод POST, потому что размеры GET-запроса ограничены.

У каждого из методов есть свои достоинства и свои недостатки. По мере наших выпусков я буду уделять им внимание, когда это необходимо. Пока же помните: большой объём данных — POST.

И в заключение

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

Советую Вам, в качестве «домашнего задания» подготовить какую-либо форму и обработчик к ней. Постарайтесь сделать как можно больше полей и сделайте так, чтобы все они работали.

Следующий выпуск будет посвящён основным конструкциям языка PHP.

Если у Вас что-то не получается — пишите мне, а я постараюсь помочь каждому из Вас в освоении PHP.

Спасибо за внимание! Удачи в изучении PHP!


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: inet.webbuild.phplearn
Отписаться

В избранное