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

Задание 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.