Проблемы с редактированием базы данных предоставленными пользователями текстами

Я действительно боролся последние несколько дней по этой проблеме. И я бы очень признателен за помощь.
Сейчас я работаю над блогом для местного политика в моем городе. Это в основном первый раз, когда я развиваю в php, поэтому, пожалуйста, не судите меня. И тут возникает моя проблема:
Мой друг хочет публиковать новости и блоги на своей домашней странице. Поэтому я создал небольшую CMS в php, чтобы помочь ему сделать это. Все работает отлично, за исключением части редактирования.
Мои проблемы с редактированием:

  • Если ему нужно какое-то форматирование, я нашел метод nl2br () действительно полезным, но при повторном редактировании той же записи в блоге он удваивает все <уш> теги в тексте. Ребята, вы знаете, как я мог бы сделать это более гладко?
  • Следующая проблема заключается в публикации ссылок. Если он пытается включить ссылки в свои блоги с обычными тегами HTML (<a href = «…»></ а>SQL всегда выдает ошибку из-за неправильного синтаксиса. Поэтому я использовал mysqli_real_escape_string (), чтобы предотвратить это. Но вместо того, чтобы решить проблему, он просто поставил вопросительные знаки перед всеми специальными символами.

Если бы кто-нибудь смог мне немного помочь, я был бы очень признателен!
Спасибо вам, ребята.

-1

Решение

  1. Использовать только nl2br() при выводе HTML. Когда он хочет что-то отредактировать, оставьте все как есть; \n символ будет проанализирован в текстовом поле (которое я предполагаю, что вы используете) в любом случае.

  2. Да, вам нужно избежать их (и я бы посоветовал вам посмотреть на готовые заявления быть особо защищенным). Они появляются как вопросительные знаки, потому что вы, вероятно, используете латинскую кодировку в вашей базе данных, когда это должно быть UTF-8 (информация о том, как конвертировать здесь).

В общем, работа над собственной CMS — плохая идея. Так как вы все равно собираетесь это сделать, я бы посоветовал вам взглянуть на другие дыры в безопасности, с которыми вы можете столкнуться Вот).

ОБНОВИТЬ: Вместо:

<input type="hidden" name="oldtext" value="<?php echo $_text;?>">

Ты должен сделать:

<textarea name="oldtext"><?php echo $_text; ?></textarea>

И тебе даже не нужно strip_tags, Кроме того, вам не нужно utf8_encode,

0

Другие решения

Других решений пока нет …