Проверка формы
При работе со страницами, которые включают обработку форм, часто необходимо проверять вводимые пользователем данные.
PHP имеет много строковых и числовых функций, которые можно использовать для проверки ввода пользователя. Часть строковых функций, применяемых здесь, обсуждаются также в разделе 3-6. Наиболее часто используемые функции представлены ниже:
is_string(string) – определяет, является ли переменная string строкой. Возвращает значение true или false.
is_int(string) или is_integer(string) – определяет, является ли переменная string целым числом. Возвращает значение true или false.
is_numeric(string) – определяет, является ли переменная string числовой строкой. Возвращает значение true или false.
is_double(string) или is_float(string) – определяет, является ли переменная string числом с плавающей точкой. Возвращает значение true или false
strlen(string) – возвращает длину строки string.
strpbrk(string1, string2) – ищет в строке string1 символ из строки string2, возвращает строку, начинающуюся с найденного символа (или FALSE, если ничего не найдено).
strtolower(string) – преобразует строку, хранящуюся в переменной string, в символы нижнего регистра.
strtoupper(string) — преобразует строку, хранящуюся в переменной string, в символы верхнего регистра.
Рассмотрим следующую страницу с формой XHTML:
Эта страница формы требует, чтобы пользователь ввел имя, имя учетной записи (имя пользователя) и пароль длиной не менее 4 символов, прежде чем происходит обработка формы. Такой тип проверки формы является важным, так как он помогает гарантировать, что ввод пользователя имеет правильный формат, который можно записать в базу данных, — текстовый файл, используемый для создания сообщения e-mail или для повторного вывода пользователю. Однако один XHTML не может выполнить проверку такого типа. Этот процесс выполняется с помощью перечисленных выше строковых и числовых функций PHP.
Отправка формы становится теперь трехшаговым процессом.
- Ввод данных формы и щелчок на кнопке отправки.
- Проверка ввода с помощью функций PHP.
- Обработка (запись в файл, генерация автоматического сообщения e-mail или воспроизведение ввода на экране) данных с помощью PHP.
Следующий сценарий демонстрирует этот процесс.
Пример 7.3.
(html, txt)
Когда нажимается кнопка отправки, применяется последовательность операторов для проверки содержимого полей формы. Сначала проверяется, что поле name не NULL (значение $_POST['name']). Если $_POST['name'] содержит значение NULL, это указывает, что пользователь не ввел имя в поле 'name'. Оператор echo используется для вывода пользователю сообщения об ошибке. Если $_POST['name'] содержит значение, то оно присваивается скалярной переменной $name, которая может использоваться позже в программе, когда начнется обработка данных. Затем проверяется поле 'user name' с помощью того же метода, который применялся для проверки поля 'name'. Если имя пользователя не введено, выводится сообщение об ошибке. Иначе значение присваивается скалярной переменной $username. Наконец, проверяется поле пароля 'password'. Проверка пароля является двухшаговым процессом: 1) проверяется, что пароль был введен, и 2) если пароль был введен, проверяется, что он содержит не меньше 4 символов. Первый оператор if проверяет, что пароль был введен. Оператор elseif (который выполняется, только если предыдущий оператор if будет оцениваться как true) проверяет введенный пароль с помощью функции strlen(). Эта функция возвращает длину пароля. Полученная длина сравнивается с числом 4. Если значение меньше 4, выводится ошибка. Иначе длина пароля будет допустима, и он присваивается скалярной переменной $password.
Если все поля формы содержат допустимые данные, можно начинать обработку формы. Можно задать флаг, чтобы помочь в отслеживании проверки. Сначала флаг задается (($valid_form = true) в начале блока кода. Если какое-то из полей формы не содержит допустимые данные, то флагу присваивается значение false ($valid_form). После проверки всех полей формы применяется финальный оператор if для проверки статуса флага ($valid_form). Если значение $valid_form будет true (все поля формы содержат допустимые данные), можно начинать обработку формы, иначе блок обработки формы пропускается. Пользователь получает сообщение об ошибке, возникшей во время процесса проверки, и может начинать делать исправления.