Проверка формы
При работе со страницами, которые включают обработку форм, часто необходимо проверять вводимые пользователем данные.
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.
Следующий сценарий демонстрирует этот процесс.
<?php
//Проверка, была ли нажата кнопка отправки. Если да, начинается проверка данных формы.
if(isset($_POST['submitB'])) {
//Проверяет, что было введено в поле name
$valid_form = true;
if ($_POST['name'] == "")
{
echo "Введите свое имя";
$valid_form = false;
}
else
{
$name = $_POST['name'];
}
if ($_POST['uname'] == "")
{
echo "Введите имя пользователя";
$valid_form = false;
}
else
{
$username = $_POST['uname'];
}
if ($_POST['pass'] == "")
{
echo "Введите пароль";
$valid_form = false;
}
elseif (strlen($_POST['pass']) < 4)
{
echo "Пароль должен содержать не менее 4 символов";
$valid_form = false;
}
else
{
$password = $_POST['pass'];
}
//если все поля формы были введены правильно, начинаем обработку
if($valid_form == true)
{
//код обработки формы находится здесь
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD/XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml11-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>A Web Page</title>
</head>
<body>
<form method="post" action="http://...form_validate.php"/>
Enter Name: <input type="text" name="name"/>
Enter user name: <input type="text" name="uname"/>
Enter Password (must contain at least 4 characters): <input type="password" name="pass"/>
<input type="submit" name="submitB" value="Submit"/>
</form>
</body>
</html>
Пример 7.3.
Когда нажимается кнопка отправки, применяется последовательность операторов для проверки содержимого полей формы. Сначала проверяется, что поле name не NULL (значение $_POST['name'] ). Если $_POST['name'] содержит значение NULL, это указывает, что пользователь не ввел имя в поле 'name'. Оператор echo используется для вывода пользователю сообщения об ошибке. Если $_POST['name'] содержит значение, то оно присваивается скалярной переменной $name, которая может использоваться позже в программе, когда начнется обработка данных. Затем проверяется поле 'user name' с помощью того же метода, который применялся для проверки поля 'name'. Если имя пользователя не введено, выводится сообщение об ошибке. Иначе значение присваивается скалярной переменной $username. Наконец, проверяется поле пароля 'password'. Проверка пароля является двухшаговым процессом: 1) проверяется, что пароль был введен, и 2) если пароль был введен, проверяется, что он содержит не меньше 4 символов. Первый оператор if проверяет, что пароль был введен. Оператор elseif (который выполняется, только если предыдущий оператор if будет оцениваться как false ) проверяет введенный пароль с помощью функции strlen(). Эта функция возвращает длину пароля. Полученная длина сравнивается с числом 4. Если значение меньше 4, выводится ошибка. Иначе длина пароля будет допустима, и он присваивается скалярной переменной $password.
Если все поля формы содержат допустимые данные, можно начинать обработку формы. Можно задать флаг, чтобы помочь в отслеживании проверки. Сначала флаг задается ( $valid_form = true ) в начале блока кода. Если какое-то из полей формы не содержит допустимые данные, то флагу присваивается значение false ( $valid_form ). После проверки всех полей формы применяется финальный оператор if для проверки статуса флага ( $valid_form ). Если значение $valid_form будет true (все поля формы содержат допустимые данные), можно начинать обработку формы, иначе блок обработки формы пропускается. Пользователь получает сообщение об ошибке, возникшей во время процесса проверки, и может начинать делать исправления.
Дата добавления: 2015-04-19; просмотров: 715;