Задать вопрос

Как вы фильтруете данные — до сохранения в базу или при выводе?

Или в обоих случаях?
  • Вопрос задан
  • 4573 просмотра
Подписаться 4 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 6
EugeneOZ
@EugeneOZ
Что значит «фильтровать»? Если защита от SQL-инъекций — то, безусловно, фильтровать нужно до записи. Но фильтровать не вырезанием и экранированием, а с помощью placeholders в PDO. Подробнее: habrahabr.ru/post/148701/
При выводе нужно эскейпить то, что может исполнится внутри HTML, тут уже поможет обычная htmlspecialchars() или использование нормального шаблонизатора (Twig, например).
Ответ написан
Комментировать
без фильтра на входе непредсказуемый рост объёма базы и сложности поиска в ней
Ответ написан
Комментировать
taliban
@taliban
php программист
И то и то правильно, если вам нужно обрабатывать в дальнейшем данные неочищеные, то логично что хранить вы их будете сырыми и очищать лишь при выводе. А если вам нужно хранить лишь определенный формат (нельзя тэги например) то очищать перед записью все лишнее не помешает, мало ли где показываться будут данные.
А вот при выводе нужно данные фильтровать всегда. Это самая частая ошибка =)
В базе храните что угодно, при выводе же что угодно показывать нельзя.
Ответ написан
Комментировать
eaa
@eaa
Например, нам надо считать статистику. Соответственно каждую секунду мы пишем некий объем информации. Имеем огромную базу, но и можно делать с ней все. что угодно. При выводе фильтрация и всякие арифметические операции — суммирование по неделе, месяцу и т.п.

Далее, если данных очень много — выборки начинают тормозить. А посему надо базу как-то подчищать, по крайней мере с посекундными данными. Это можно делать при вставке — например старые перекладывать куда-то, суммировать и писать уже суммы и т.п. — это уже обработка при сохранении.

Еще по-хорошему надо просто периодически по такой базе проходиться и ее оптимизировать — то же суммирование, генерирование отчетов — чтоб каждый раз не перелопачивать всю базу — такой вот периодический этап фильтрации-оптимизации.
Ответ написан
Комментировать
Angerslave
@Angerslave
Мда, не очень понятно что подразумеваете под фильтрацией? Не прошла форма валидацию — ответили пользователю отказом и не записали ничего, прошла — записали всё как есть. На выводе эскейпим. Это, конечно, в общем случае, в разных задачах могут быть разные вариации.
Ответ написан
ohmytribe
@ohmytribe
При добавлении в базу — фильтруем. При выводе — форматируем.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы