к оглавлению

Проверка корректности данных

isset() 
empty() 
stripslashes() 
htmlspecialchars() 


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

Кроме чистых ошибок пользователя, необходимо также исключить ситуации, в которых возможно злонамеренное введение некорректных данных, к примеру, различных скриптов. Для этого вводимый пользователем текст необходимо обработать функциями удаления HTML-тегов (для исключения возможности написания скриптов на JavaScript и Visual Basic) и обратных слешей (для исключения возможности написания скриптов на Perl). Т. о. минимальный набор действий, необходимый для проверки корректности данных, вводимых пользователем, включает следующие этапы:

Проверка на пустоту поля

Проверка того, что пользователь ввел данные, может осуществляться, к примеру, с помощью функции isset:

<?php
  $name = $HTTP_POST_VARS['name'];
  if (!isset($name))
  {
    // если переменная $name не существует просим повторить ввод имени
?>
    <h1> Вы забыли ввести ваше имя </h1>
    <!-- далее следует HTML-код формы, в которой вводится имя -->
<?php
  }
  else
  {
    -
  }
?>

Для этой же цели можно использовать функцию empty:

<?php
  $name = $HTTP_POST_VARS['name'];
  if (empty($name))
  {
    // если поле пустое, снова просим ввести имя
?>
    <h1> Вы забыли ввести ваше имя <h1>
    <!-- далее следует HTML-код формы, в которой вводится имя -->
<?php
  }
  else
  {
    -
  }
?>

На практике удобно сначала проверить, не пустой ли action формы, а потом уже проверять различные его составляющие: поле имя, e-mail и т. д. К примеру:

<?php
  $action = $HTTP_POST_VARS["action"];
  if (!empty($action)) 
  {
    if (empty($name)) 
    {
     // код, для случая, когда не введено имя
    }
    if (!empty($email))
    {
       // код, для случая, когда не введен e-mail
    }
  // дальнейший код скрипта
  }
  if (empty($action)) 
  {
?>
  <!-- здесь пишем HTML-код формы, в которой вводится информация -->
<?php
  }
?>

Проверка допустимости вводимых данных

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

Будем исходить из того, что адрес должен иметь вид something@server.com. Как видим, у адреса две составляющие - имя пользователя и имя домена, которые разделены знаком @. В имени пользователя могут присутствовать буквы нижнего и верхнего регистров, цифры, знаки подчеркивания и минуса, точки. Для проверки разделителя между именем пользователя и именем домена в выражение требуется добавить +@. Таким образом, регулярное выражение, проверяющее имя пользователя и наличие разделителя имеет следующий вид:

  "/[0-9a-z_]+@[0-9a-z_^\.]"

Для проверки доменного имени добавляем такое выражение:

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

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

  "/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i"

Точно таким же образом вы можете проверить и остальные заполняемые пользователем поля.

Удаление HTML - тегов и обратных слешей

Как уже говорилось, вводимый пользователем текст необходимо обработать функциями удаления HTML-тегов (для исключения возможности написания скриптов на JavaScript и Visual Basic) и обратных слешей (для исключения возможности написания скриптов на Perl). К примеру, если переменная $name содержит текст с именем пользователя, то обработка этого текста выглядит так:

<?php
  $name = substr($HTTP_POST_VARS["name"],0,32);
  $name = htmlspecialchars(stripslashes($name));
?>
к оглавлению

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

НОВОСТИ ФОРУМАФорум Рыцари теории эфира
Рыцари теории эфира
 13.11.2019 - 11:05: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
12.11.2019 - 19:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Марины Мелиховой - Карим_Хайдаров.
12.11.2019 - 19:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Светланы Вислобоковой - Карим_Хайдаров.
12.11.2019 - 12:05: ЭКОНОМИКА И ФИНАНСЫ - Economy and Finances -> ПРОБЛЕМА КРИМИНАЛИЗАЦИИ ЭКОНОМИКИ - Карим_Хайдаров.
12.11.2019 - 11:53: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Бориса Сергеевича Миронова - Карим_Хайдаров.
12.11.2019 - 11:49: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Веры Лесиной - Карим_Хайдаров.
11.11.2019 - 00:24: СОВЕСТЬ - Conscience -> РУССКИЙ МИР - Карим_Хайдаров.
10.11.2019 - 23:14: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Кирилла Мямлина - Карим_Хайдаров.
08.11.2019 - 06:44: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
08.11.2019 - 06:42: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вячеслава Осиевского - Карим_Хайдаров.
05.11.2019 - 21:56: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Декларация Академической Свободы - Карим_Хайдаров.
04.11.2019 - 12:41: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> КОМПЬЮТЕРНО-СЕТЕВАЯ БЕЗОПАСНОСТЬ ДЛЯ ВСЕХ - Карим_Хайдаров.
Bourabai Research Institution home page

Bourabai Research - Технологии XXI века Bourabai Research Institution