какие преимущества в использовании фильтров над обычными функиями ?

Arramis

Новичок
Добрый день (вечер)
Представьте есть форма с 10 - ью полями. Идёт стандартная обработка формы (прочие проверки аля если не пусто, если удовлетворяет формату какой - то регулярке и т.д.). Так вот оказывается существует несколько (как я сегодня узнал) варианта обработки форм :

1) с помощью обычных часто используемых функций типа htmlspecialchars(), addslashes(), strip_trags() и т.д.
2) с помощью так называемых фильтров

Собстенно, почитав в мануале про эти фильтры - понял, что большинство из них работают аналогично обычным функиям, даже некоторые из них применяют эти самые функции.
вопрос:
Я не понимаю тогда в чём приемущество (или может недостаток) в использовании этих фильтров ??
 

WMix

герр M:)ller
Партнер клуба
валидация и фильтрация разные вещи, с одной стороны нужно проверить что это дата, с другой нужно подготовить эту дату в правильный формат
 

Arramis

Новичок
валидация и фильтрация разные вещи, с одной стороны нужно проверить что это дата, с другой нужно подготовить эту дату в правильный формат
причём здесь это? ну это и так ясно что разные вещи. Не вижу ответа на вопрос )
 

WMix

герр M:)ller
Партнер клуба
в чем вопрос? нужно ли переводить дату в необходимый формат еще на уровне формы?
да это удобно!
 

Arramis

Новичок
в чем вопрос? нужно ли переводить дату в необходимый формат еще на уровне формы?
да это удобно!
я вобще не понял пример про дату честно говоря, мой вопрос был о другом такой :
есть стандартные функции фильтрации и валидации данных,
и есть так называемые фильтры использующие по сути теже функции но обрабатывающие по иному

чем целесообразнее пользоваться ? стандратными функциями или фильтрами?? - скажем если есть форма с 10 ью полями, эти фильтры по сути делают тоже самое, так вот если у них преимущества или может недостатки ???? применяли ли вы эти фильтры ?
 

undefined

Новичок
Добрый день (вечер)
Представьте есть форма с 10 - ью полями. Идёт стандартная обработка формы (прочие проверки аля если не пусто, если удовлетворяет формату какой - то регулярке и т.д.).
Представляю прилетело 10 полей среди которых, id, name, date, cat, dog, squilrrel и так далее. Как вы узнаёте какое поле какого типа и какие данные для него правильные?
 

hell0w0rd

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

чем целесообразнее пользоваться ? стандратными функциями или фильтрами?? - скажем если есть форма с 10 ью полями, эти фильтры по сути делают тоже самое, так вот если у них преимущества или может недостатки ???? применяли ли вы эти фильтры ?
Фильтры быстрее по идее, тк встроены в ядро, но с фильтрами вы не можете выдать пользователю конкретное место ошибки. Если регулярка фильтра вам не подойдет, есть способ отправить свою
А вообще советую вам посмотреть компонент форм в Symfony
 

keltanas

marty cats
Целесообразнее пользоваться готовым модулем генерации и валидации форм.
 

WMix

герр M:)ller
Партнер клуба
а можно пример "так называемых фильтров использующих по сути теже функции но обрабатывающихся иначе" поглядеть
 

Arramis

Новичок
Представляю прилетело 10 полей среди которых, id, name, date, cat, dog, squilrrel и так далее. Как вы узнаёте какое поле какого типа и какие данные для него правильные?
всмысле как ? проверять каждое поле исходя из того что пришло... но вот как обрабатывать в этом вся суть вопроса.
 

Arramis

Новичок
а можно пример "так называемых фильтров использующих по сути теже функции но обрабатывающихся иначе" поглядеть
http://www.php.net/manual/ru/filter.filters.sanitize.php
опечатался, обрабатывают они впринципе одинаково. но некоторые использую те же самые функции к пример вот этот фильтр :
FILTER_SANITIZE_MAGIC_QUOTES "magic_quotes" Применяется функция addslashes().
 

undefined

Новичок
всмысле как ? проверять каждое поле исходя из того что пришло...
В смысле как вы определяете тип того, что пришло чтобы исходя из него проверять каждое поле.

Я пытаюсь ответить на ваш вопрос по существу. Попробуйте и вы понять что написано в моем вопросе.
 

undefined

Новичок
Преимущества есть и я верю что если просто поискать практику то можно быстро все понять. Но кто будет искать?

Третий раз. Откуда скрипт знает что значение поля name должно удовлетворять одному ряду условий, а значение поля gender - другому?
 

WMix

герр M:)ller
Партнер клуба
извеняюсь, первую ссылку не увидел

константами удобнее декларировать (кажись undefined на это и намекает)
PHP:
$inputs = array(
    'date' => array( 'validate' => array( array(
        'filter'  => FILTER_VALIDATE_REGEXP, 
        'options' => '\d{1,2}\.\d{1,2}\.\d{4}',
        'msg'     => 'эта фигня "%s" на дату не похожа!'
    ))),
    ...
);
....
foreach( $inputs as $key => $attrs ){
  foreach( $attrs['validate'] as $filter ){
    if( filter_var( $_POST[$key], $filter['filter'], $filter['options']) !== FALSE ){
        $errors[$key][] = sprint_f($filter['msg'], $_POST[$key]);
    }
  }
}
 

Arramis

Новичок
Третий раз. Откуда скрипт знает что значение поля name должно удовлетворять одному ряду условий, а значение поля gender - другому?
сам скрипт незнает об этом вобще говоря в обоих случаях, (как при использовании фильтров так и обычнымы функциями). Тоесть и там и там всё проделывается в ручную - под каждое поле строятся свои конкретные методы валидации и очистки. Хотите сказать что фильтры, засчёт того что работают на уровне ядра php в неком смысле автоматизируют валидацию и фильтрацию данных ?
 

keltanas

marty cats
Arramis
Тебя на протяжении всего топика пытаются подтолкнуть, что плевать, как будет происходить проверка данных. Хоть функциями filter*, хоть регулярными выражениями, хоть еще как-то.
Главное, чтобы это было удобно и автоматизировано.
Ни один вменяемый программист не будет в ручную каждый раз проверять данные каждой формы.
Для этого берется скрипт, в который забиваются параметры проверки, передаются данные и после эти данные валидируются и при необходимости преобразовываются.

Как именно оно там будет валидироваться, дело десятое. Главное, чтобы информация о валидности была верной.

Собственно скриптов, которые осуществляют валидацию разного качества довольно много. Включая как средства, встроенные во фреймворки, так и отдельные компоненты.

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

Arramis

Новичок
да, я уже начинал склонятся к этой мысли сам, спасибо всем за помощь =)
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
сам скрипт незнает об этом вобще говоря в обоих случаях, (как при использовании фильтров так и обычнымы функциями). Тоесть и там и там всё проделывается в ручную - под каждое поле строятся свои конкретные методы валидации и очистки. Хотите сказать что фильтры, засчёт того что работают на уровне ядра php в неком смысле автоматизируют валидацию и фильтрацию данных ?
Фильтры работают не на святом духе, вообще говоря. В том же FILTER_VALIDATE_EMAIL внутри банальное регулярное выражение, причём сначала было то же самое, что и в HTML_QuickForm, потом взяли чуть более правильное.
 
Сверху