Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метода ТОБД.doc
Скачиваний:
24
Добавлен:
13.04.2015
Размер:
8.25 Mб
Скачать

Тема №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\"> ");

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 для создания формы.

Прим. HTML код на рис. 3.12. показан мелким жирным шрифтом.

Если пользователь введет данные (как показано на рис. 3.11) и нажмет кнопку “OK”, то вновь будет вызвана программа Lab3.php, но в ней сработает ветка

else

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

и на экран будет выведена следующая информация (рис. 3.13)

Рис. 3.13. Результат обработки события “OK” при вводе значений данных как показано на рис. 3.11.

Если Пользователь использует (см. рис. 3.13), то будет вызвана программаLab3_1.php, код которой приведен на рис. 3.14., а результат представлен на рис. 3.15.

Программа Lab3_1.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_1</title>

</head>

<body>

<?PHP

//реакция при нажатии на ссылку HERE, см. файл Lab3.php

//$FirstName = $_GET['FirstName'];

$Name = $_GET['Name'];

$Name1=$_REQUEST['Name'];

if (isset($Name1)) // проверка переменной Name1 на ее существование

{ echo "Переменная с именем Name1 доступна и равна ".$Name1." Ее тип=".gettype($Name1);}

else

{ echo "Переменная с именем Name1 НЕ доступна через REQUEST";

echo "<br>Ее тип=".gettype($Name1);//опеделение типа переменной

} //конец if-else

// echo "<br>Полный адрес к скрипту. Исполняется скрипт - http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];

echo "<br>Исполняется скрипт-http://".$_SERVER['SERVER_NAME'];

$a=$_SERVER['REQUEST_URI'];

echo "<br>Передали через адресную строку <br>".$a;

echo "<br> Метод ".$_SERVER['REQUEST_METHOD']." также передал ".$Name ; // GET

echo "<br> QUERY_STRING ".$_SERVER['QUERY_STRING'];

echo "<br> PHP_SELF=".$_SERVER['PHP_SELF'];

if (isset($_SERVER['HTTP_REFERER'])) //контроль существования переменной

{

echo "<br>Вы пришли на данную страницу с адреса: ".$_SERVER['HTTP_REFERER'];

$e = $_SERVER['HTTP_REFERER'];//http://localhost/php/Lab3.php

$d = strstr($e, '/php/');

//print "<br> d=".$d; // печатает /php/Lab3.php

$pos = strpos($d, "/php/"); //

$str=substr($d,$pos+5); //вырежет только Lab3.php

}

print("<br>Hello из $str - Имя и Фамилия: ' $Name '.Отработала ".$_SERVER['PHP_SELF']);

//print("<center> Hello из $d Имя и Фамилия: ' $Name '!!!</center>");

?>

</body>

</html>

Рис. 3.14. Исходный код программы Lab3_1.php – обработка ссылки.

Рамка (fieldset)

Объект fieldset позволяет вам нарисовать рамку вокруг объектов. Имеет закрывающий тэг </fieldset>. Заголовок указывается в тэгах <legend></legend>. Основное назначение объекта – задавание различных стилей оформления.

Например:

<fieldset>

<legend>Программное обеспечение (заголовок рамки)</legend>

Текст, который будет помещен внутри рамки.</fieldset>

Рис. 3.15. Результат работы программы Lab3_1.php – обработка ссылки.

Задание 2. Использование рамок в приложении

Разработать приложение в котором создается форма ввода, испоющая рамку (см. рис. 3.16.).

Рис. 3.16. Пример формы ввода на экране.

Программа Lab3_2.php (рис. 3.17) подготавливает форму для ввода информации:

  • Имени;

  • Фамилии;

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

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

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

Рис. 3.17. Пример ввода значения фамилии.

то необходимо вызвать программу Lab3_2.php, в которой необходимо вывести на экран информацию в виде, показанном на рис. 3.18.

Рис. 3.18. Пример вывода введенных значений.

Исходный код программы, реализующий обработку и вывод информации на экран, показанный на рис. 3.17, 3.18 и 3.20 приведен на рис. 3.19 (мелким шрифтом показан текст относящийся к HTML коду).

<!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" />

<!--Обработчик формы в этом же файле Lab3_2.php, method=POST-->

<title>Lab3_2</title>

</head>

<body bgcolor="#f6f6f6" text="#009999" >

<h2>Использование <i><b>bgcolor</b></i> и выделение ссылки цветом</h2><!--Заголовок формы-->

<!--строки текста прижаты по умолчанию, т.е. влево-->

<!--Шрифтовые элементы (font elements) - физическая разметка текста

Шрифтовые элементы это: TT "телетайпный" текст, т.е. текст одного размера