Валидация форм

Приветствую своих читателей на моем блоге. Эта статья из категории "PHP  для новичков", или "уроки веб программирования", или "основы веб программирования". Ну в общем - как то так. Встречаю много людей для которых проверить данные формы является большой проблемой, ну если не проблемой то большой сложностью. Итак представляю вниманию , на мой взгляд, самый оптимальный вариант.

Итак, у нас есть форма:

<form action='' method='post'>

<input type='text' name='pole1' value=''>

<input type='text' name='pole2' value=''>

<input type='submit' name='submit_form' value='Отправить'>

</form>

Нам необходимо проверить поля pole1 и pole2. Предположим что первое поле у нас должно быть числовым, а второе - только латинскими буквами без пробелов.

Для начала мы должны проверить была ли отправлена форма

<?if (isset($_POST['submit_form'])){

}?>

Далее все манипуляции с данными будем писать в этих тегах. Для начала введем дополнительную переменную $is_valid , которая нам и будет показывать валидна у нас форма или нет. по умолчанию ее поставим в значение true , а при возникновении какой - нибудь ошибки формы будем присваивать ей значение false. Итак получим:

<?if (isset($_POST['submit_form'])){

$is_valid=true;

///проверка полей

if (!preg_match('/^[0-9]+$/i', $_POST['pole1']){$is_valid=false; $err[]='Неверно введено поле 1'}

if (!preg_match('/^[a-zA-Z]+$/i', $_POST['pole2']){$is_valid=false; $err[]='Неверно введено поле 2'}

}?>

после делаем проверку не изменилась ли у нас переменная $is_valid. Если изменилась то это означает ошибку и они хранятся в массиве $err, которые необходимо вывести

if ($is_valid){

//// тут запись в бд или отправка на email

}else{

/// вывод ошибки

print implode('<br>', $err);

}

для удобства можно еще в форму в поля value вставить данные введенные и выводить форму только когда ошибка или только открытая форма. Итого у нас получается:

<?if (isset($_POST['submit_form'])){
$is_valid=true;
///проверка полей
if (!preg_match('/^[0-9]+$/i', $_POST['pole1']){$is_valid=false; $err[]='Неверно введено поле 1'}
if (!preg_match('/^[a-zA-Z]+$/i', $_POST['pole2']){$is_valid=false; $err[]='Неверно введено поле 2'}
if ($is_valid){
//// тут запись в бд или отправка на email
}else{
/// вывод ошибки
print implode('<br>', $err);
}
}?>
<?if (!$is_valid):?>
<form action='' method='post'>
<input type='text' name='pole1' value=''>
<input type='text' name='pole2' value=''>
<input type='submit' name='submit_form' value='Отправить'>
</form>
<?endif;?>
уроки веб программирования
Запись опубликована в рубрике Веб-программирование. Добавьте в закладки постоянную ссылку.

7 комментариев: Валидация форм

  1. Николай говорит:

    Интересный метод. Спасибо есть что перенять.

  2. Бу-бу говорит:

    Метод проверки полей понравился, взял себе, спасибо.
    P.S. не советовал бы использовать одинарные ковычки в HTML`e :)

  3. Игорёк говорит:

    То что надо! Спасибо.

  4. Уведомление: Парсер. Что такое. Простейший пример.

  5. Уведомление: Запрет на повторную отправку формы