Вот головую ломаю надо ли тект обрабатывать функций htmlspecialchars($text) перед сохранением в базу или не стоит? Это же кто то может в текст вставить ссылку на какой нибудь внешний файл который будет грузиться пользователю. Как вы поступаете в это случаи?
От задачи зависит. Мне лично в БД не нужен лишний мусор от пользователей PHP: <?php if (!$User->isAdmin()){ $Comments = $Text->FormatUserInput ($Comments); } Как-то так
Собственно, зачем такое делать: ( разве что, только для записи в файлы) PHP: <?php $str = "A 'quote' is <b>bold</b>"; echo htmlentities($str); // выводит: A 'quote' is <b>bold</b> echo htmlentities($str, ENT_QUOTES); // выводит: A 'quote' is <b>bold</b> ?> Почитайте пжт мануалы немного p.s.: скрипт взял с и-нета
а ты не обращаешь внимание на нагрузку на сервер? если обрабатывать перед сохранением в базу то эта функция вызывается один раз, а если перед выводом, то это может быть тысячи вызовов или я сильно драматизирую
А если валидация написана коряво, то будут ли они валидными , пройдя её ? Формально - да, а фактически ? В моём понимании валидные данные это внешние данные, отвечающие всем поставленным требованиям, после прохождения всевозможных проверок, делающих их безопасными для дальнейшего использования в системе.
Amian, в твоём понимании слоники могут спариваться с морскими свинками потому что и те и другие продолговатые. Нам-то что с того? Валидные данные, чмо ты резкое, это когда данные надёжны и действительны. В админке поле textarea может быть валидным просто потому что не является пустым. Комментарий к посту может быть валидным даже если содержит html. Безопасными должны их делать пост обработчики. А если у тебя руки из жопы и мозг там же, ну, можно и так. Мама тебя не разлюбит. Только аргументы твои никто всерьёз не примет, даже твоя мама.
lexa, нежнее, ещё нежнее… Amian, ну, не могут данные быть опасными или безопасными. Следуя твоему определению, я никогда не смогу воспользоваться логином вида <script>alert('Luge');</script>, хотя, основываясь на общечеловеческой логике, ничто, казалось бы, не мешает. Но твой htmlspecialchars просто создаст запись искажающую введённые мной данные. И залогиниться просто не получится. В то же время остальные смогут видеть на странице пользователей мой юзернэйм таким, как я его вводил. А это уже недоработка, бага, если хочешь. Опять же, только что я написал код, который должен скукожить всю станицу, но он этого что-то не делает. не путай, пожалуйста, понятия «безопасного вывода» и «минимально-достаточных условий для работы системы»
Быдлокодерам, действительно, с этого ничего не будет. Может организуете клуб по интересам? Не спорю, а где я писал другое? Я написал, что валидация должна происходить на входе, а не перед выводом данных в уровень представления. И дал определение, что по сути является валидацией. Ищо вопросы, мой юный поддаван? Мне по сути насрать как ты, lexa, называешь валидатор внешних данных - "пост обработчиками", "гет обработчиками" или "рекуест обработчиками". Где я написал, что htmlspecialchars() нужно всегда использовать? Было написано, что если вдальнейшем подразумевается использовать htmlspecialchars() перед выводом данных в уровень представления, то это наиглупейший подход. Делать это надо перед тем, как данные попадут в систему.
Данные не могут быть опасными. Сегодня ты выводишь данные в HTML, завтра захочешь в PDF, а послезавтра решишь в консоле показывать. htmlspecialchars это даже не фильтрация, это постобработка данных.
Спорить на эту тему, в отрыве от конкретного случая бессмысленно, можно привести аргументы и в ту и другую сторону. Пожалуй пока все не переругались тему стоит закрыть. Аминь.