@Artem0071
Безработный mr. Junior

Как правильно сохранять текст в БД и затем выводить его?

Добрый день!

Я запутался.. Как правильно сохранять текст в БД и затем его выводить? И при этом чтобы в БД ничего не удалили и вывелось все красиво.

Я хочу создать Блог, в нем человек вводит какой то текст, и при этом может использовать тэги.

В var_damp($_POST['text']) у меня выводит:
$_POST['text'] =>жирный текст икурсив

Если я делаю htmlspecialchars($_POST['text']), то var_damp выводит следующее
$_POST['text'] => <b>жирный текст</b> и <i>курсив</i>


В общем, как будет правильнее это сохранить в БД и затем вывести на страницу? И при этом чтобы никто в БД ничего не удалил и не изменил, и чтобы на клиенте не вывалилось никаких неожиданных alert'ов

Заранее спасибо!
  • Вопрос задан
  • 919 просмотров
Решения вопроса 1
xpert13
@xpert13
Full Stack Developer
Если используете PDO - сохраняйте как есть, без каких либо изменений, если сами пишите запросы, тогда нужно экранировать кавычки.

var_damp к БД не имеет никакого отношения, не смотрите на него.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@d-stream
Готовые решения - не подаю, но...
Как один из вариантов - хранить в БД исходный текст с тегами наподобии BB-кодов, а там где надо отображать html - парсить эти коды и заменять на соответствующие html конструкции

Второй - "наоборот" в базе хранить уже готовый html, но "рядышком" в комментариях - исходные BB-коды (чтобы при редактировании пользователем сообщения не пришлось делать обратную трансформацию.

Подсмотреть реализации можно будет исходниках движков форумов типа phpBB, Invision Power Board и т.п.
Ответ написан
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
При нормальной вставке (например через PDO) хранить как дал юзер, при выводе можно резать "неугодные" теги, символы и прочее.
В целом: верный подход - хранить as is, выводить фильтруя.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽