Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




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

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

 

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

 

 

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

 

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

 

Задание 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"): // Заполнялась ли форма ранее?

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']))

{

// Убедиться в правильности синтаксиса адреса электронной почты

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

// [email protected]

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

// 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: [email protected]</font><br>";

endif;

}

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']))

 

Шаблон, с которым функция 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 адреса могут присутствовать только цифры, латинские буквы, точка, тире и знак подчёркивания, причем начианаться адрес должен с буквы. В домене могут быть только цифры, латинские буквы, тире и точки.

Также не забывайте, что электронный ящик может находиться на поддомене [email protected], или даже на домене четвертого, пятого уровня (как вариант, реально эта ситуация крайне редка, но отбрасывать эти адреса не стоит). Поэтому в регулярном выражении не забывайте использовать точку (экранированную "\.") для указания того, что часть адреса после "@" может содержать точку как разделитель доменных имен.

 

Для проверки доменного имени первого уровня учитываем, что его длина уже составляет не только 2 символа (.ru) или 3 символа (.com), но и 4 символа -.info, и даже 6 символов. Поэтому в шаблоне присутствует выражение:

"\.[a-z]{2,6}$/i"

 

Проверка осуществляется по этому шаблону с применением функции preg_match():

- Функция bool preg_match(string $expr, string $str [,list &$pockets]) сопоставляет выражение $expr в строке $str.

 

 

Задание 2.Использование функций пользователя для контроля полей формы

Ниже на рис. 3.44 показана форма ввода содержащая поле для ввода Email и в программе рис. 3.45 показано каким образом контролируется ввод информации в указанное поле.

 

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

 

Листинг программы Lab6_0_1.php, содержащий функцию пользователя для проверки корректности адреса электронной почты.

Рис. 3.45. Листинг программы Lab6_0_1.php для формы на рис. 3.44.

 

 

Рис. 3.46. Продолжение листинга программы Lab6_0_1.php для формы на рис. 3.44.

 

В функции пользователя Val_email использованы стандартные функции:

- Функция int strlen(string $st) определяет длину строки;

- Функция string trim(string $st [, string $charlist]) удаляет ведущий и концевые символы строки.

 

Если пользователь (в форму на рис. 3.44) введет информацию как показано на рис. 3.47, и нажмет кнопку , то реакция пользовательской функции Val_email показана на рис. 3.48.

Рис. 3.47. Форма с введенной информацией.

 

Обратите внимание, что после нажатия кнопки нижнее сообщение на рис. 3.47 исчезнет.

Рис. 3.48.Сообщение об ошибке сгенерированное пользовательской функцией.

 

Если пользователь исправит ошибку (рис. 3.49) и вновь нажмет , то ответ из программы Lab6_0_1.php показан на рис. 3.50.

Рис. 3.49. Исправление в поле Email введенное пользователем.

 

Рис. 3.50. Сообщение о правильности ввода контролируемое функцией val_email().

 

Ответьте на вопрос. Существует ли в реальности такой адрес Email, приведенный на рис, 3.49.?

 

Задание 3. Проверка ограничений в текстовом поле. Lab6_0_2.php

Очень часто встречается ситуация, когда надо написать регистрацию на ресурсе, который вы поддерживаете. В силу каких-либо причин выдвигаются требования к введенной информации. Например, как проверить, что пользователь ввел в качестве ника (nickname, login) слово, состоящее только из букв латинского алфавита и цифр.

 

Проверку условия приведена внутри кода (рис. 3.51), чтобы было понятно, что и куда писать:

<?php

$user = $_POST['username'];

if(!preg_match("/^[a-zA-Z0-9]+$/", $user)) {

echo "Имя пользователя задано в неправильном формате";

} else {

echo "Имя пользователя задано в правильном формате";

}

?>

Рис. 3.51. Проверка специфичного имени пользователя.

 

Разбирем само регулярное выражение.

 

Так как регистрационное имя пользователя должно состоять из латинских букв, а также цифр, то надо написать символьный класс, который будет удовлетворять этому условию: [ a-zA-Z0-9 ].

В этот символьный класс входит три интервала, первый интервал a-z (все символы от маленькой буквы a до маленькой буквы z), второй интервал A-Z (аналогично, но с большими буквами), третий интервал 0-9 (цифры от 0 до 9). Мы описали только одну букву, из которой может состоять регистрационное имя, но таких букв может быть... а теперь как раз надо ответить на вопрос, сколько таких букв может быть?

Если Ваш ответ будет: “Да сколько угодно”, то вы неправы.

 

Регистрационное имя должно состоять минимум из одной буквы! и это обязательное условие при прохождении регистрации, поэтому надо данный факт описать. Вспоминаем про квантификаторы: [a-zA-Z0-9]+

 

Плюс '+', как раз тот квантификатор, который говорит, что в строковой переменной $user должен быть минимум один символ, который соответствует условию.

 

Далее надо сказать регулярному выражению, что условию должна соответствовать вся строка, от начала до конца, поэтому добавляем в регулярное выражение символ начала строки '^' в начале регулярного выражения и символ конца строки '$' в конец: ^[a-zA-Z0-9]+$

 

Теперь надо объяснить функции preg_match, что строка ^[a-zA-Z0-9]+$ является регулярным выражением, надо поставить ограничители, для этого и ставлится слеш '/':

preg_match("/^[a-zA-Z0-9]+$/",$user)

 

Полный листинг сценария в котором использовано ограничение для вводимого имени приведено на рис. 3.52 (файл Lab6_0_2.php).

Рис. 3.52. Листинг программы Lab6_0_2.php (проверка имени пользователя).

Рис. 3.53. Конец листинга программы Lab6_0_2.php.

 

Ниже на рис. 3.54 приведена форма ввода для листинга программы из рис. 3.52 - 3.53.

 

Рис. 3.54. Заполненная форма. Программа Lab6_0_2.php.

 

Если будет нажата кнопка , то результат показан на рис. 3.55.

 

Рис. 3.55. Результат работы программы Lab6_0_2.php.

 

Если пользователь введет информацию, как показано на рис. 3.56, то результат приведен на рис. 3.57.

 

Рис. 3.56. Заполненная форма. Программа Lab6_0_2.php.

 

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

 

Рис. 3.57. Результат работы программы Lab6_0_2.php.

 

Задание 4. Специфика имени пользователя. Lab6_0_3.php

В 80% случаев вышеприведенная задача усложняется на практике, надо либо расширить набор символов, что делается простым добавлением символов в символьный класс, либо ужесточаются условия. Например, ставится условие, что имя пользователя может состоять как из букв латинского алфавита, так и из цифр, но первый символ имени пользователя должен быть обязательно буквой латинского алфавита!

Дописываем регулярное выражение: ^[a-zA-Z][a-zA-Z0-9]*$

 

Как известно, символьный класс описывает только один символ. Наша задача как раз в том и состоит, чтобы описать один символ (первый): [a-zA-Z] тут два интервала, описывают первый символ и дают понять, что никаких цифр в первом символе проверяемой строки быть не может.

 

В предыдущем примере явно следовало, что регистрационное имя пользователя должно быть длинной минимум в один символ. Мы уже описали первый символ строки, но он может быть и единственным, после него может быть сколько угодно символов, либо может их вообще не быть, но регулярное выражение совпадет только тогда, когда все последующие символы будут удовлетворять условию, что они являются либо буквами латинского алфавита, либо цифрами. [a-zA-Z0-9]. Первый обязательный символ описан, остальные символы не обязательны, поэтому меняем квантификатор с '+' на '*', Ставим символы начала и конца строки: ^[a-zA-Z][a-zA-Z0-9]*$

 

Если в листинге программы 42-ю строку (рис. 3.53)

заменить на (файл Lab6_0_3.php):

то на ввод информации (рис. 3.58) получим следующую реакцию (рис. 3.59).

 

Рис. 3.58. Заполненная форма. Программа Lab6_0_3.php.

 

Рис. 3.59. Результат работы программы Lab6_0_3.php.

 

Задание 5. Специфика имени пользователя с помощью JavaScript. Lab6_0_4.php

 

Пример использования JavaScript (файл Lab6_0_4.php).

Ниже (рис. 3.60) представлен HTML код самой формы:

 

<form onsubmit="return checkmail(this.email.value)" action="#" method="post">

<input id="email" name="email" />

<input type="submit" value="Отправить" />

</form>

Рис. 3.60. Код для формы Lab6_0_4.php.

 

И код функции на JavaScript, которая и проверяет email.

 

<script language="javascript" type="text/javascript">

function checkmail(value) {

reg = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/;

if (!value.match(reg)) {alert("Пожалуйста, введите свой настоящий e-mail");

document.getElementById('email').value=""; return false; }

}

</script>

Рис. 3.61. Код функции на JavaScript для проверки email (Lab6_0_4.php).

 

 

В принципе, если не хотите вникать в суть дела, можете просто скопирвать код, всё будет работать). Напоминаем, что в Интернете существует огромное количество открытых кодов для проверки Email адресов и их надо использовать, а не придумывать свои коды.

 

Рис. 3.62. Пример Lab6_0_4.php при неправильном указании Email адреса в форме ввода.

 

Проверка на корректность адреса электронной почты

<?php

function check_email($email) {

if (preg_match("%^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z])+$%", $email)) {

return true;

}

return false;

}

?>

 

 

Задание 6. Проверка правильности ввода URL. Lab6_1.php.

Проверка правильности ввода URL является достаточно сложной задачей. Построить универсальное регулярное выражение, которое соответствовало всем URL, очень не просто.

При построении регулярного выражения будем исходить из того, что URL имеет следующий формат:

http://хост/путь

 

Простейшим вариантом проверки, не позволяющим посетителю ошибаться при наборе URL, но в то же время не предотвращающий неверный формат, является:

"#http://[^]*\.html?#i"

Данное выражение учитывает только URL расширения файла html либо htm, для обобщения на другие файлы следует расширить регулярное выражение до:

"#http://[^]*\.(html?|php|pl|cgi)#i"

 

Уточняя регулярное выражение, разместим за префиксом http:// регулярное выражение для хоста — [-a-z0-9_.]+. Структура пути может быть более разнообразной. Для него необходимо использовать выражение вида:

 

[-a-z0-9_:@&?=+,.!/~*'%$]*

 

Объединяя все в одно регулярное выражение, получаем следующее:

 

"#http://[-a-z0-9_.]+[-a-z0-9_:@&?=+,.!/~*'%$]*\.(html?|php|pl|cgi)#i"

 

На рис. 3.63 приведена форма с полем URL адреса.

 

Рис. 3.63. Пример Lab6_1.php при неправильном указании URL адреса в форме ввода.

Как видно из рис. 3.63, при таком вводе обработчик зафиксирует ошибку, которая может быть представлена рис. 3.64.

Рис. 3.64. Реакция Lab6_1.php при неправильном указании URL адреса в форме ввода на рис. 3.63.

 

Исходный листинг Lab6_1.php приведен ниже на рис. 3.65.

<!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>Lab6_1 Регулярные выражения</title>

</head>

<h2> Регулярные выражения для URL </h2>

<h3 align="left"><font color=RED>(файл Lab6_1.php)<font color=BLUE> </h3>

<body

TEXT=BLUE

LINK=RED

VLINK=BLUE ALINK=PINK>

 

<?PHP

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

{

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

print("<form action=\"Lab6_1.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>URL</td>");

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

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

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

print("</form>");

}

else

{

$Url_adress=$_POST['Url'];

//echo "Указан адрес $Url_adress ";

if (strlen($Url_adress)<8)

{echo "Указанный адрес $Url_adress менее 8-и символов";//

exit;//завершение выполнения PHP сценария

}

//Единственным обязательным признаком в URL:

//url это обязательно две группы символов, разделенных точкой.

//Больше ничего обязательного для URL нет.

//Например, google.com или supersait.ru

if(preg_match('#^[-a-z0-9]+(\.[-a-z0-9]+)*(\.[a-z]+)(|\/|\/([a-z0-9-_\(\)!\&\#\.\/\~]+(\.[a-z0-9\_\-]+)?(\?([a-zа-я0-9-_\%]*|([a-z0-9_-]+=[a-zа-я0-9-_\%\&]*)+))?(\#[a-z0-9]*)?)?)$#i', $Url_adress))

{

// URL верен. Например, ORD.com.ru

//Внимание! Это выражение не проверяет на наличие "http://"

}

else

{

// URL НЕ верен

echo "Возможный Url Ord.com.ru или www.ord.com.ru <br>";

exit("Указанный адрес $Url_adress <font color=\"red\">НЕ верен</font><br>");

 

}

 

if(!preg_match("#http://[-a-z0-9_.]+[-a-z0-9_:@&?=+,.!/~*'%$]*\.(html?|php|pl|cgi|ru)#i", $Url_adress))

{

echo "Указанный адрес $Url_adress допустим <br>";

 

$Pattern="^(http://)?([^[:space:]]+)([[:alnum:]\.,?%#\-\:;&])$";

if (ereg($Pattern,$Url_adress)):

//ereg - совпадение с регулярным выражением.

//Ищет в строке Url_adress совпадения с регулярным

//выражением, данным в шаблоне pattern.

//

 

$Replace="<a href=\"http://\\2\\3\" target=\"_self\">\\2\\3</a>";

$Url_adress=eregi_replace($Pattern, $Replace, $Url_adress);

//Функция eregi_replace ищет регулярное выражение Pattern

//в строке Url_adress и заменяет его строкой Replace.

//функция не чувстительна к регистру

print("Ваша подача документа по URL адресу - $Url_adress - может быть осуществлена!");

//Например. Ваша подача документа по URL адресу -

// www.ord.com.ru - может быть осуществлена!

 

else:

print("URL не точен");

endif;

}

//exit("Неверный формат URL");

}

?>

</body>

</html>

Рис. 3.65. Листинг Lab6_1.php с проверкой URL.

 

Если пользователь введет правильную информацию рис. 3.66, то вывод в браузере показан на рис. 3.67.

Рис. 3.66. Форма Lab6_1.php с проверкой URL.

 

Рис. 3.67. Форма Lab6_1.php с проверкой URL.

 

 

Задание 7. Проверка правильности ввода из списка. Lab6_2.php.

Пусть необходимо разработать форму (рис. 3.68)

 

Рис. 3.68. Форма Lab6_2.php.

Для указания способа связи использован следующий список (рис. 3.69)

 

Рис. 3.69. Форма Lab6_2.php списком значений.

 

Форма выводится с помощью листинга представленного на рис. 3.70 (файл Lab6_2.php), а обработка события производится в файле Lab6_3.php (листинг программы показан на рис. 3.71).

Файле Lab6_3.php в свою очередь содержит внутренний обработчик событий представленный в файле Lab6_4.php (рис. 3.72).

Листинг программы Lab6_2.php представлен ниже.

 

Рис. 3.70. Листинг Lab6_2.php с списком значений.

 

Как указано в строке

обработчик нажатия кнопки “OK”, находится в отдельном файле с именем Lab6_3.php.

В качестве способа связи по умолчанию предлагается использовать “Телефон”.

 

Естественно пользователь может указать один из видов связей, что должно быть учтено в обработчике Lab6_3.php (рис. 3.71).

 

Рис. 3.71. Листинг обработчика Lab6_3.php.

 

Обратите внимание, что в листинге программы Lab6_3.php (рис. 3.71) Html код должен помещаться после PHP кода, иначе функция

будет выдавать предупреждение о присутствии информации перед PHP кодом.

 

Кроме того текст программы Lab6_3.php, в свою очередь содержит обработчик Lab6_4.php (листинг представлен на рис. 3.72) для возможности обработки ошибок при вводе значений в поле связи (рис. 3.73).

 

Рис. 3.72. Листинг обработчика Lab6_4.php.

 

Пусть пользователь ввел информацию в форму, показанную на рис. 3.69.

Тогда в обработчике Lab6_3.php (через глобальный массив $_POST) будут доступны переменные:

Так как значения переменных $FirstName и $LastName непусты и равны соответственно $FirstName =’Иван’, $LastName= ‘Иванов’, то будет построена форма (рис. 3.73) с помощью операторов ниже приведенных операторов (полный текст см. рис. 3.71):

 

 

и тело формы закрывается операторами

 

На основании указанных операторов на экран будет выведено:

 

Рис. 3.73. Содержание формы сгенерированное обработчиком Lab6_3.php.

 

Если пользователь введет в форму (рис. 3.73) информацию, показанную на рис. 3.74 и нажмет кнопку , то обработчик Lab6_4.php, указанный в теле Lab6_3.php

 

получит информацию через $_POST, которая показана на рис. 3.75.

 

Рис. 3.74. Содержание формы (рис. 3.73) после указания Email.

 

 

Рис. 3.75. Результат работы обработчика (рис. 3.72) по нажатию рис. 3.74.

 

Рассмотрим ситуацию когда форма, показанная на рис. 3.69 остается не заполненной и сразу нажимается кнопка (рис. 3.76).

 

Рис. 3.76. Содержание формы без ввода информации.

 

В этом случае на экране получим сообщение (рис. 3.77) на основе выполнения условия .

Рис. 3.77. Содержание формы без ввода информации.

 

Если пользователь вернется на предыдущую страницу и укажет (рис. 3.78)

 

Рис. 3.78. Содержание формы c информацией.

Нажатие для содержимого рис. 3.78 приведет к результату (рис. 3.79).

 

Рис. 3.79. Содержание формы (файл Lab6_3.php) c информацией.

 




Поделиться с друзьями:


Дата добавления: 2014-12-07; Просмотров: 683; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.281 сек.