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

StalkerClasses

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

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

А на сайте там где нужно применяется при выводе на странице htmlspecialchars();?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
StalkerClasses, кавычки надо отключать, и забыть о том, чтобы обрабатывать данные этими функциями перед записью в базу. Про вывод - да.
 

StalkerClasses

Новичок
Про сайт понял.

Не совсем пойму про формы и вставку в БД.
Если пользователь в input вводит у меня текст - Тест с квычками (""ауц") - то он нарушит верстку и может дописать <b>Что-то....
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
StalkerClasses, да, и что? Твоя задача хранить данные в том виде, в каком они пришли. При выводе все его <b> превратятся в пух и прах, ничерта не сработает. Если же тебе надо дать юзеру возможность вставлять разметку - есть BB коды.
 

StalkerClasses

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

Фанат

oncle terrible
Команда форума
Взаимоисключающие параграфы.
Либо ты "про сайт понял", либо "он нарушит верстку".

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

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

AmdY

Пью пиво
Команда форума
Про сайт понял.

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

Фанат

oncle terrible
Команда форума
Не совсем пойму про формы и вставку в БД.
Формы не имеют ни малейшего отношения к вставке в БД. И эти обе - к выводу чего бы то ни было. Это всё три разные, никак не связанные сущности. И работать с ними всеми надо по-разному, независимо от других.

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

StalkerClasses

Новичок
Так понимаю:
В БД храниться оригинал.
На сайте где нужно при выводе на странице - идет htmlspecialchars(), или BB-коды к примеру.

Но не могу разоабраться с формами. Вот человек отправляет форму. В input он передает текст с кавычками. И input слетает. Как вывести эту переменную что бы она коррктно отображалась в value? - это не получается сделать.
 

Фанат

oncle terrible
Команда форума
Кстати да, хорошее замечание. Если передаем в инпут или в текстарию, то htmlspecialchars надо применять вообще всегда ,без исключений.
 

StalkerClasses

Новичок
Надеюсь все правльно:
PHP:
                if (get_magic_quotes_gpc() == 1) {
                    $formInput = stripslashes($v);
                }
                $ formInput = htmlspecialchars($v, ENT_QUOTES);
                //$formInput = htmlspecialchars($v);
 

Фанат

oncle terrible
Команда форума
нет, все неправильно. Такой функции вообще не должно быть (речь о первом варианте)
 

Фанат

oncle terrible
Команда форума
второй вариант тоже бессмысленный.
PHP:
$formInput = htmlspecialchars($v,ENT_QUOTES);
будет достаточно
 

Фанат

oncle terrible
Команда форума
если эти кавычки включены на хостинге, то их надо вырезать отдельно от любых других действий, и при входе данных в скрипт, а не при выводе.

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