Вопрос про обратные слэши и htmlspecialchars

StalkerClasses

Новичок
Добрый день.

Есть форма - input,textarea.
- правильно ли понимаю - ко всем формам нужно применять для value - А) htmlspecialchars(), Б) stripslashes() - если кавычки включены
- при вставке в БД нужно применять htmlspecialchars_decode() (т.е. храним в БД Оригинал того что ввел пользвоатель;

А на сайте там где нужно применяется при выводе на странице htmlspecialchars();?
 
StalkerClasses, кавычки надо отключать, и забыть о том, чтобы обрабатывать данные этими функциями перед записью в базу. Про вывод - да.
 
Про сайт понял.

Не совсем пойму про формы и вставку в БД.
Если пользователь в input вводит у меня текст - Тест с квычками (""ауц") - то он нарушит верстку и может дописать <b>Что-то....
 
StalkerClasses, да, и что? Твоя задача хранить данные в том виде, в каком они пришли. При выводе все его <b> превратятся в пух и прах, ничерта не сработает. Если же тебе надо дать юзеру возможность вставлять разметку - есть BB коды.
 
StalkerClasses, да, и что? Твоя задача хранить данные в том виде, в каком они пришли. При выводе все его <b> превратятся в пух и прах, ничерта не сработает. Если же тебе надо дать юзеру возможность вставлять разметку - есть BB коды.
Имею в виду вот это: <input type="text" value="<?php htmlspecialchars($_POST['test']) ?>"> - это нужно делать и это так делать?
 
Взаимоисключающие параграфы.
Либо ты "про сайт понял", либо "он нарушит верстку".

Если бы ты действительно понял, что при выводе надо делать htmlspecialchars(), то никаких посторонних идей про нарушение верстки у тебя бы не возникло.

подсказка. что сделает htmlspecialchars() с текстом с кавычками?
 
Про сайт понял.

Не совсем пойму про формы и вставку в БД.
Если пользователь в input вводит у меня текст - Тест с квычками (""ауц") - то он нарушит верстку и может дописать <b>Что-то....
это нужно делать всегда, кроме пары случаев когда не надо и нужно вывести html как есть/
 
Не совсем пойму про формы и вставку в БД.
Формы не имеют ни малейшего отношения к вставке в БД. И эти обе - к выводу чего бы то ни было. Это всё три разные, никак не связанные сущности. И работать с ними всеми надо по-разному, независимо от других.

Вот 3 вещи, которые тебе надо понять.
1. Данные принятые из формы, никак специально обрабатывать не надо
2. Все переменные, которые ты помещаешь в SQL запрос, должны передаваться через плейсхолдеры.
3. При выводе любой информации в HTML, кроме отдельно оговоренных случаев, когда требуется какой-то специальный формат, надо всегда обрабатывать их через htmlspecialchars()
 
Так понимаю:
В БД храниться оригинал.
На сайте где нужно при выводе на странице - идет htmlspecialchars(), или BB-коды к примеру.

Но не могу разоабраться с формами. Вот человек отправляет форму. В input он передает текст с кавычками. И input слетает. Как вывести эту переменную что бы она коррктно отображалась в value? - это не получается сделать.
 
Кстати да, хорошее замечание. Если передаем в инпут или в текстарию, то htmlspecialchars надо применять вообще всегда ,без исключений.
 
Надеюсь все правльно:
PHP:
                if (get_magic_quotes_gpc() == 1) {
                    $formInput = stripslashes($v);
                }
                $ formInput = htmlspecialchars($v, ENT_QUOTES);
                //$formInput = htmlspecialchars($v);
 
нет, все неправильно. Такой функции вообще не должно быть (речь о первом варианте)
 
второй вариант тоже бессмысленный.
PHP:
$formInput = htmlspecialchars($v,ENT_QUOTES);
будет достаточно
 
если эти кавычки включены на хостинге, то их надо вырезать отдельно от любых других действий, и при входе данных в скрипт, а не при выводе.

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