// codeart.ru / Главная / Фильтрация данных, важный ньюанс Форум

Фильтрация данных, важный ньюанс rss подписка

Автор: Evgeny Sergeev

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

$clean = array();
if (preg_match(”/^[0-9]+:[X-Z]+$/”, $_GET['var'])) {
$clean['var'] = $_GET['var'];
}

выглядит просто и понятно. Но в данном коде допущена существенная ошибка!

Проблема в символе “$”, который обозначает в данном случае конец строки, а не текста! При поступлении “многострочных” данных, скрипт анализирует первую строку, и если она соответствует шаблону признает валидными весь текст.

Вот как выглядит код, лишенный этого недостатка:

$clean = array();
if (preg_match(”/^[0-9]+:[X-Z]+$/D”, $_GET['var'])) {
$clean['var'] = $_GET['var'];
}
  1. дык днях нашли дырку в Filter PHP5.2, связана с модификатором D. (: совпадение?

  2. Конечно :-)

Leave a Reply

« Убийца Flash-а… Вы достойны!!! »