Поиск

Получение данных из формы в РНР

Вы создали форму. Теперь необходимо написать сценарий HandleForm.php, который будет получать и обрабатывать данные, введенные пользователем в эк ранной форме form.html. Вот здесь и станет очевидна простота и эффектив ность языка РНР.

Создание сценария HandleForm.php
  1. Откройте текстовый редактор и создайте новый документ.
  2. <HTMLxHEADxTITLE>Form Results</TITLEx/HEADxBODY>
    —<?php /*Эта страница получает и отрабатывает данные, принятые
    от "form.html". */?></BODYx/HTML>.
  3. Это стандартный формат PHPстраницы. Мы добавили комментарий о цели создания сценария. Хотя страница form.html указывает, куда посы лаются данные (через атрибут ACTION), мы должны сделать комментарий, указывающий обратное. Создайте новую строку после комментария, но до закрывающего PHPтэга.
  4. Наберите следующий текст:

    print ("Your first name is $FirstName.<BR>\n");
    print ("Your last name is $LastName.<BR>\n");
    print ("Your Email address is $Email.<BR>\n");
    print ("This is what you had to say:<BR>\n $Comments<BR>\n");
  5. Сохраните сценарий в файле с именем HandleForm.php.
  6. Загрузите сценарий на сервер (листинг 3.4) и убедитесь, что он сохранен в одном каталоге со страницей form.html.
  7. Протестируйте сценарий в Webбраузере (рис).

Листинг 3.4 т Взяв название элемента NAME = "Name" в HTMLформе и доба вив знак $, вы получаете переменную, которая содержит значение, введенное пользователем в соответствующем поле формы. Это справедливо для любого типа ввода кода HTML, будь то TEXT, TEXTAREA или выбор из меню SELECT, и явля ется одной из причин того, почему язык РНР так хорош для обработки HTML форм. Для сравнения: CGIсценарии требуют синтаксического анализа кода.


1. <HTML>
2. <HEAD>
3. <TITLE>Form Results</TITLEx/HEAD>
4. <BODY>
5. <?php
6. /* Эта страница получает и отрабатывает данные, принятые от "form.html".*/
7. print ("Your first паве ie $FirstHame.<BR>\n");
8. print ("Your last name is $LaetName.<BR>\n");
9. print ("Your Einail address is $Email.<BR>\n") ;
10. print ("This is what you had to say:<BR>\n $CommentB<BR>\n");
11. ?>
12. </BODY>
13. </HTML>

Смысл этого .упражнения в том, чтобы показать, как легко можно передать данные из HTMLформы в РНРстраницу. PHPсценарий сохранит данные в соответствующих переменных, поэтому переменная $FirstName получит зна чение, введенное пользователем в поле First Name (вы берете имя поля в HTML форме, добавляете знак $ и получаете переменную с соответствующим значе нием). Передача происходит автоматически, и в отличие от GCI в РНР нет необходимости в синтаксическом разборе входного потока.

Еще одно преимущество использования языка РНР для обработки HTMLформ состоит в том, что при передаче автоматически происходит экранирование всех специальных символов.

Например, если вы введете комментарий I thought

"form.html" was too simple!, переменная $Comments будет равна I thought
\" form. html \ " was too simple!, и комментарий можно распечатать без ослож

Если вы хотите передать в сценарий предварительно заданное значение, ис пользуйте тип ввода HIDDEN в вашей HTMLформе.

Например, строка <INPUT
ТУРЕ = HIDDEN NAME = "ThisPage" VALUE = " form.html ">, вставленная
между тэгами FORM, создаст в сценарии обработки переменную $ThisPage со
значением " form.html". Таким же образом, дав команду print ("<INPUT
TYPE=HIDDENNAME=\ "FirstNameX " VALUE=\ " $FirstName\ " > " ) ; , вы можете
«продлить жизнь» переменной $FirstName, передавая ее значение в другие
формы.

Хотя в РНР для вывода формы на экран и обработки данных из нее можно исполь зовать один файл, мы отложим этот прием, пока не рассмотрим все языковые кон струкции РНР. Пока же будем пользоваться отдельным файлом, который назван HandleForm.php.