Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

metoda / Ml_ITIn_2013

.pdf
Скачиваний:
17
Добавлен:
16.03.2016
Размер:
6.66 Mб
Скачать

91

Тема №5. Использование управляющей структуры switch

Цель работы: Обучение применению структуры switch.

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

SWITCH-CASE, в котором создается форма для простого калькулятора (см.

рис. 3.30 и рис. 3.33).

Рис. 3.30. Вид формы для калькулятора.

Исходный код Lab5.0.php для вывода формы представленной на рис. 3.30, показан на рис. 3.31.

Рис. 3.31. Исходный код создания формы .

92

Рис. 3.32. Продолжение исходного кода создания формы . Пояснения к коду программы создания формы (рис. 3.31 - 3.32).

При пересылке формы в сценарий Lab5_1.php будут переданы две переменные - $Var1 и $Var2, так как именно эти имена являются значениями параметра NAME, использованного при создании каждого текстового поля. Значениями этих переменных будут значения, введенные пользователем в соответствующие поля формы.

Кроме того, если пользователь отметит какое-то действие, с помощью радио кнопки, в сценарий (обработчик формы) будет передана переменная Scalc (с указанным значением).

В форме используется обработчик с именем Lab5_1.php

Исходный код (Lab5_1.php) обработки формы представлен на рис. 3.33.

Рис. 3.33. Исходный код Lab5_1.php обработки ввода.

93

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> <title>Lab5_1 Результаты</title>

</head>

<body>

<p>Результат вычислений равен <? echo $rez; ?> </p>

94

<p>Результат получен в обработчике Lab5_1.php </p>

</body>

</html>

Рис. 3.34. Продолжение исходного кода Lab5_1.php обработки ввода.

Если строка

в коде HTML не будет вставлена, то на экране будет выведена информация вида (рис. 3.38):

Рис. 3.35. Результат обработки ввода при отсутствии указания русской кодировки.

Если в форму ввести значения указанные на рис. 3.39, то обработчик выдаст на экран информацию, показанную на рис. 3.40.

Рис. 3.36. Результат ввода информации.

Если кнопка будет нажата

95

Рис. 3.37. Результат работы обработчика для рис. 3.36.

Если в форму (рис. 3.30) не вводить информацию и нажать кнопку

, то получим результат:

Рис. 3.38. Результат работы обработчика при отсутсивии информации в форме и нажатии кнопки ―Вычислить‖.

Задание 2. Разработать сценарий обрабочика кнопки OK с

использованием Switch, приложение использует форму ввода показанную на рис. 3.39 и сопутствующий ей код на рис. 3.40.

Contact.html

Рис. 3.39. Форма ввода.

<html>

<head>

<title>Contact</title>

</head>

<body bgcolor=yellow>

<form action="ContactHow.php" method=POST>

96

<table> <tr><td> First Name</td>

<td><input type=text name="FirstName" size=20></td></tr> <tr><td>Last Name</td>

<td><input type=text name="LastName" size=20></td></tr> <tr><td> Comments</td>

<td><textarea name="Comments" rows=5 cols=40></textarea></td></tr></table>

Способ связи

<p><select name="ContactHow" size=1> <option value="Telephone">Телефон</option> <option value="Pochta">Почта</option> <option value="Email">E-mail</option> <option value="Fax">Fax</option>

</select>

<p><input type=submit name="Submit" value="OK">  <input type=reset name="Reset" value="Cancel">

</form>

</body>

</html>

Рис. 3.40. Исходный код HTML формы ввода.

Тема № 6. Использование регулярных выражений в сценариях РНР

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

До настоящего момента предполагалось, что пользователь всегда вводит правильные данные и не действует злонамеренно. В данной теме мы усовершенствуем рассмотренные примеры и организуем проверку целостности данных форм. Проверка ошибок не только обеспечивает удаление неполной и неправильной информации, но и обеспечивает более эффективный и удобный интерфейс.

Проверка ошибок

Обработка пользовательских данных дает осмысленный результат лишь в том случае, если данные имеют правильную структуру. Проверить достоверность введенных данных невозможно, однако вы можете проверить их целостность (например, убедиться в том, что адрес электронной почты соответствует стандартному шаблону). Поскольку код PHP выполняется на стороне сервера, вы всегда можете быть уверены в том, что проверка данных формы даст нужный результат (конечно, при условии правильности вашей программы).

При обнаружении ошибки в данных необходимо сообщить об этом пользователю и предложить внести исправления. Существует несколько возможных решений, в том числе простой вывод сообщения об ошибке и предложение альтернативных вариантов (например, если пользователь

97

выбирает имя, которое уже было выбрано другим пользователем). В этом разделе рассматривается процедура проверки и вывода сообщений,

Задание 1. Вывод информации о ошибочно заполненных полях формы

Мы последовательно проверяем все поля формы и убеждаемся в том, что они не остались пустыми. Там, где это возможно, проверяется правильность структуры введенных данных. Если проверка прошла успешно, мы переходим к следующему полю; в противном случае программа выводит сообщение об ошибке, устанавливает флаг, который позднее используется для повторного отображения формы, и переходит к следующему полю. Процедура повторяется до тех пор, пока не будут проверены все поля формы

(рис. 3.41, файл Lab6_0.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></title>

</head>

<body bgcolor="#ffffff" text="#000000" link="#cbda74"

 

vlink="#808040" alink="#808040">

 

 

<? PHP

 

 

 

 

$name = $_POST['name']; //$name=$_REQUEST['name'];

 

$seenform=$_POST['seenform'];

 

 

$email=$_POST['email'];

 

 

 

// Создать форму

 

 

 

$form = "

 

 

 

 

<form action=\"Lab6_0.php\" method=\"post\">

 

 

<input type=\"hidden\" name=\"seenform\" value=\"z\">

 

<b>Введите информацию</b><br>

 

 

Ваше имя:<br>

 

 

 

<input

type=\"text\"

name=\"name\"

size=\"20\"

maxlength=\"20\"

value=\"$name\"><br>

 

 

 

Ваш Email:<br>

 

 

 

<input

type=\"text\"

name=\"email\"

size=\"20\"

maxlength=\"40\"

value=\"$email\"><br>

<input type=\"submit\" value=\"Отправить\"> <br>Lab6_0.php. Обработка ошибок при вводе <br>неправильного Email производится в этом же файле

</form>";

if ($seenform != "z"): // Заполнялась ли форма ранее?

98

print "$form"; //echo " Первая прорисовка формы";

else:

//Пользователь заполнил форму. Проверить введенные данные.

//echo " form нарисована $name"; $error_flag = "n"; //признак что ошибок нет if ($name == ""):

//Убедиться в том, что поле имени содержит информацию

print "<font color=\"red\"> Вы забыли ввести Ваше имя </font><br>"; $error_flag = "y";//признак наличия ошибоки

endif;

// Убедиться в том. что поле адреса содержит информацию if ($email == ""):

$error_flag = "y";

print "<font color=\"red\">Укажите правильный email address! Он не должен быть пустым.</font><br>";

else:

//Преобразовать все алфавитные символы в адресе электронной почты //к нижнему регистру

$email = strtolower(trim($email)); endif;

if(!empty($_POST['email']))

{

// Убедиться в правильности синтаксиса адреса электронной почты //Будем считать, что стандартный адрес электронной почты выглядит так:

//

admin@mail.ru

//Адрес состоит из двух частей это:

//

admin - имя пользователя.

//

mail.ru - домен, доменное имя.

//Их разделяет знак @(собака).

//Имя пользователя - может состоять из букв разного регистра, //цифр, знаков подчѐркивания, точек, минусов.

//Доменное имя - так же может состоять из букв разного //регистра, цифр, знаков подчѐркивания, точек, минусов.

if(preg_match("|^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,6}$|i", $_POST['email'])): echo $_POST['email']. " Email - Правильный.";

$error_flag = "n";

else:

$error_flag = "y";

echo $_POST['email']. " Email - НЕправильный.";

print "<font color=\"red\"> Пример правильного возможного email: admin@mail.ru</font><br>";

endif;

99

}

else

{ echo "Вы не ввели email."; }

if ($error_flag == "y"):

// Если флаг ошибки $error_flag установлен, то заново отобразить форму. print "$form";

else: // Обработать данные пользователя print "<br>Данные введены правильно";

endif;

endif;

?>

</body>

</html>

Рис. 3.41. Проверка данных формы и вывод сообщений об ошибках. Lab6_0.php.

На экране форма будет представлена в виде (рис. 3.42).

Рис. 3.42. Форма ввода для листинга приведенного на рис. 3.41.

Программа в листинге 3.38 убеждается в том, что поля имени и адреса электронной почты не остались пустыми, а также проверяет правильность синтаксиса введенного адреса. Если в результате каких-либо проверок в форме обнаруживаются ошибки, программа выводит соответствующие сообщения и отображает форму заново -- при этом вся введенная ранее информация остается в форме, благодаря чему пользователю будет проще внести исправления.

Отметим, что в функцию preg_match передаются два параметра – шаблон, которому должен соответствовать email адрес и собственно сам адрес, введенный пользователем $_POST['email'] if(preg_match("|^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,6}$|i", $_POST['email']))

100

Шаблон , с которым функция preg_match будет сравнивать email адрес, может выглядеть так:

1."[0-9a-z_]+@[0-9a-z_^\.]+" - это часть паттерна (шаблона), проверяющая имя пользователя, собаку и домен второго уровня до точки.

2."\.[a-z]{2,6}" - эта часть проверяет домен первого уровня (ru,com,ua и т.д.).

Объединим всѐ и получим такой шаблон:

"|[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,6}|i"

В конце шаблона присутствует модификатор i он сообщает интерпретатору, что поиск проводится без учѐта регистра, т.е. могут присутствовать и заглавные буквы и прописные.

Как известно, у адреса две составляющие - имя пользователя и имя домена, которые разделены знаком @. Для проверки разделителя между именем пользователя и именем домена в шаблоне (регулярном выражении) указано +@.

На рис. 3.43 приведен пример вывода сообщения об ошибочных действиях пользователя при заполнении формы на рис. 3.42.

Рис. 3.43. Заполненная форма ввода для листинга приведенного на рис. 3.41.

Подчеркнем, что в первой половине e-mail адреса могут присутствовать только цифры, латинские буквы, точка, тире и знак подчѐркивания, причем начианаться адрес должен с буквы. В домене могут быть только цифры, латинские буквы, тире и точки.

Также не забывайте, что электронный ящик может находиться на поддомене xxx@xxx.xxx.com, или даже на домене четвертого, пятого уровня (как вариант, реально эта ситуация крайне редка, но отбрасывать эти адреса не стоит). Поэтому в регулярном выражении не забывайте использовать

Соседние файлы в папке metoda