Тема №3. Создание формы и РНР-сценария в одном файле

Цель работы:Получение навыков и понимание взаимосвязанной работы формы и ее обработки.

Обработка форм

Все данные, которые Вы хотите получить из HTML-формы в PHP сценарий обрабатываются с помощью суперглобальных массивов $_POST или $_GET, в зависимости от указанного в атрибуте method метода передачи данных.

Задание 1: Получение данных из текстового поля

Вам необходимо получить данные из текстового поля и многострочного поля ввода и передать их сценарию.

Решение: Необходимо создать HTML форму и PHP – сценарий для обработки формы.

Создадим два файла: form.html и action.php. В файле form.html будет содержаться html-форма с текстовым полем mytext и текстовой областью msg:

 

<form action="action.php" name="myform" method="post">

<input type="text" name="mytext" size="50">

<textarea name="msg" cols="20" rows=”10” ></textarea>

<input name="Submit" type=submit value="Отправить данные">

</form>

 

В этой html-форме нас интересует три элемента: action, который указывает путь к обработчику формы (action.php), имя текстового поля (mytext) и имя многострочного поля вода (msg). Также в форме присутствует кнопка(Submit), при нажатии на которую, происходит передача данных.

 

После того как html-форма готова, необходимо создать обработчик формы action.php:

 

<?php

$text = $_POST['mytext'];

$msg = $_POST['mytext'];

echo $text; // Выводим содержимое текстового поля

?>

 

После того как мы введем любые значение в текстовые поля и нажмем на кнопку "Отправить данные" html-форма отправит значения сценарию action.php.

После этого в переменных $text и $msg будут содержаться значения текстового поля и многострочного поля ввода соответственно, значения которых взяты из суперглобальных переменных $_POST.

 

Если вы хотите, чтобы в многострочном текстовом поле соблюдалось html-форматирование, то используйте функцию nl2br():

 

<?php

$text = nl2br($_POST['mytext']);

?>

 

Задание 1.: Разработать приложение, в котором:

Создается форма ввода (см. рис. 3.11.) помощью программы Lab3.php (см. рис. 3.12.) для введения пользователем данных:

· Имени;

· Фамилии;

· Адреса электронной почты;

· Текста - комментария.

Информация указанных данных должна быть охвачена рамкой (fieldset).

 

Введенные данные обабатываются этим же PHP-сценарием Lab3.php (при нажатии кнопки “OK” или Enter на поле ввода). В программе показана реализация ограничения, требующего обязательного ввода значения поля Фамилия. Если поле Фамилия будет означено и нажата кнопка “OK”, то необходимо вызвать программу Lab3_1.php, в которую необходимо передать зашифрованную информацию.

Lab3_1.php должна отобразить данные в окне браузера.

 

Рис. 3.11. Форма созданная с помощью программы Lab3.php с введенными данными.

 

Исходный код программы Lab3.php создающий форму средствами PHP:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />

<title>Lab3 Anketa</title>

</head>

<h1 align="justify" >Анкета </h1><!--Заголовок формы-->

<!--justify: строки текста выравниваются по обоим краям.-->

<fieldset style="width: 50%" align="right">

<legend>Ввод исходных данных (заголовок рамки)</legend>

<body bgcolor=><!--по умолчанию белый фон формы-->

<?PHP //тело PHP блока для создания и обработки формы

 

if (!isset($_POST[Submit]))

{

//echo "Кнопку Submit=OK еще не нажимали <br>";

//Создание формы и описание ее объектов.

 

print("<form action=\"Lab3.php\" method=POST>");

print("<table> <tr><td> Имя </td>");

print("<td><input type=text name=\"FirstName\" size=20></td></tr>");

print("<tr><td>Фамилия</td>");

print("<td><input type=text name=\"LastName\" size=20></td></tr>");

print("<tr><td>E-mail</td>");

print("<td><input type=text name=\"Email\" size=40></td></tr>");

print("<tr><td> Комментарий</td>");

print("<td><textarea name=\"Comments\" rows=5 cols=40></textarea></td></tr></table>");

print("<input type=submit name=\"Submit\" value=\"OK\">&nbsp;");

print("<input type=reset name=\"Reset\" value=\"Отмена-Cancel\">");

//print("<input type=reset name=\"Reset\" value=\"Cancel\">//");

 

print("</form>");

}

else

{//Вывод введенных данных

 

$FirstName=trim($_POST[FirstName]);

$iFirstName=$FirstName;

echo "Вышли из формы, нажав кнопку OK. Вывод значений переменных <br>";

$LastName=trim($_POST[LastName]);

if (empty($LastName))

{//проверка на пустое значение переменной $LastName- Фамилия

echo '$LastName Не введена. Введите Фамилию ';

exit; //выйти из программы

}

$Email=trim($_POST[Email]);

$Comments=trim($_POST[Comments]);

$Name=$FirstName." ".$LastName;

print("Ваше имя Firstname is: $FirstName <br>");

print("Ваша фамилия is: $LastName <br>");

print("Ваш e-mail is: $Email <br>");

print("В поле комментария было: $Comments <br>");

$FirstName=md5($FirstName);//шифруем имя

print("Шифрованное имя через md5(Firstname) - is $FirstName <br>");

print("Конкатенация Имени и фамилии: $Name <br>");

$Name=urlencode($Name);

print("urlencode Имени и фамилии: $Name <br>");

print("Click <A href=\"Lab3_1.php?Name=$Name\">here</a> здесь и будет вызвана Lab3_1.php с параметром Name=<br> $Name, ввели имя=".$iFirstName);

 

//Действие каждого из 6-и ниже стоящих операторов

//эквивалентно действию вышестоящего оператора

//print (" <a href=Lab3_1.php?Name=$Name> here</a> ");

//print " <a href=Lab3_1.php?Name=$Name> here</a> ";

//echo ("<br><a href='Lab3_1.php?Name=$Name'> here</a>");

//echo "<br><a href='Lab3_1.php?Name=$Name'> here</a>";

//echo "<br><a href='Lab3_1.php?Name=$Name'> См.далее</a>";

//print("Click <A href=\"http://localhost/PHP/Lab3_1.php?Name=$Name\">here</a> здесь и будет вызвана Lab3_1.php с параметром $Name, ввели имя=".$iFirstName);

 

}

?>

</body>

</html>

Рис. 3.12. Код программы Lab3.php для создания формы.