Цель работы:Получение навыков и понимание взаимосвязанной работы формы и ее обработки.
Обработка форм
Все данные, которые Вы хотите получить из 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\"> ");
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 для создания формы.