Кто может подсказать?
Я из формы хочу поместить в базу текст содержащий теги.
Например такой:
<h3>Моя история</h3>
<p>Какой то текст</p>
Если я ввожу этот текст в базу вручную, то потом в браузере он выводится обычным отформатированным этими тегами текстом.
т.е. как мне и нужно.
Но я делаю админку, и этот текст мне нужно забрасывать в базу из поля формы:
<textarea name="text" id="text" cols="86" rows="5"></textarea>
В обработчике пишу:
[/php]if (isset($_POST['text'])) {$text = $_POST['text']; if ($text == '') {unset($text);}}[php]
Но этот метод хорошо пропускает в базу обычный текст без тегов и т.д.
А с тегами - Увы!
Как можно решить мою задачу? Заранее благодарен.
Спустя 1 минута, 10 секунд (30.11.2011 - 13:22) Renden написал(а):
Dali
htmlspecialchars - при записи в базу
htmlspecialchars_decode - при выводе из базы на страницу
htmlspecialchars - при записи в базу
htmlspecialchars_decode - при выводе из базы на страницу
Спустя 8 минут, 2 секунды (30.11.2011 - 13:30) killer8080 написал(а):
Цитата (Dali @ 30.11.2011 - 12:21) |
В обработчике пишу: [/php]if (isset($_POST['text'])) {$text = $_POST['text']; if ($text == '') {unset($text);}}[php] Но этот метод хорошо пропускает в базу обычный текст без тегов и т.д. А с тегами - Увы! |
а причем тут теги? Обрабатывай входные данные как положено, через mysql_real_escape_string и все будет нормально вставляться.
Другое дело, что это чистая XSS уязвимость ...
Спустя 22 минуты, 4 секунды (30.11.2011 - 13:52) Dali написал(а):
Цитата (Renden @ 30.11.2011 - 10:22) |
Dali htmlspecialchars - при записи в базу htmlspecialchars_decode - при выводе из базы на страницу |
В обработчике я так и ввёл:
if (isset($_POST['text'])) {$text = htmlspecialchars($_POST['text']); if ($text == '') {unset($text);}}
Но как и где прописать вывод - htmlspecialchars_decode, что то не понял.
Нельзя ли подробнее...
Спустя 4 минуты, 23 секунды (30.11.2011 - 13:56) TranceIT написал(а):
Цитата (Dali @ 30.11.2011 - 10:52) |
Но как и где прописать вывод - htmlspecialchars_decode, что то не понял. |
То, что выводите из БД обернуть.
Спустя 2 минуты, 50 секунд (30.11.2011 - 13:59) killer8080 написал(а):
Dali
базе пофигу какой текст в неё пихают, нужно просто экранировать спецсимволы, и htmlspecialchars тут ни причем.
базе пофигу какой текст в неё пихают, нужно просто экранировать спецсимволы, и htmlspecialchars тут ни причем.
Спустя 5 минут, 20 секунд (30.11.2011 - 14:04) Игорь_Vasinsky написал(а):
прикрути к textarea Tiny MCE и усё
Спустя 1 час, 34 минуты, 35 секунд (30.11.2011 - 15:39) inpost написал(а):
Dali
mysql_real_escape_string -> когда записываешь данные в БД! И всё, ничего более (кроме TRIM) использовать не надо при записи.
Если ты выводишь не html разметку, то при выводе -> htmlspecialchars,
Если хочешь выводить html -> то тебе нужно обработать htmlspecialchars, а потом использовать bb-decoder. [ b] заменяет в <b>. Достаточно всё просто.
mysql_real_escape_string -> когда записываешь данные в БД! И всё, ничего более (кроме TRIM) использовать не надо при записи.
Если ты выводишь не html разметку, то при выводе -> htmlspecialchars,
Если хочешь выводить html -> то тебе нужно обработать htmlspecialchars, а потом использовать bb-decoder. [ b] заменяет в <b>. Достаточно всё просто.