Я действительно боролся последние несколько дней по этой проблеме. И я бы очень признателен за помощь.
Сейчас я работаю над блогом для местного политика в моем городе. Это в основном первый раз, когда я развиваю в php, поэтому, пожалуйста, не судите меня. И тут возникает моя проблема:
Мой друг хочет публиковать новости и блоги на своей домашней странице. Поэтому я создал небольшую CMS в php, чтобы помочь ему сделать это. Все работает отлично, за исключением части редактирования.
Мои проблемы с редактированием:
- Если ему нужно какое-то форматирование, я нашел метод nl2br () действительно полезным, но при повторном редактировании той же записи в блоге он удваивает все <уш> теги в тексте. Ребята, вы знаете, как я мог бы сделать это более гладко?
- Следующая проблема заключается в публикации ссылок. Если он пытается включить ссылки в свои блоги с обычными тегами HTML (<a href = «…»></ а>SQL всегда выдает ошибку из-за неправильного синтаксиса. Поэтому я использовал mysqli_real_escape_string (), чтобы предотвратить это. Но вместо того, чтобы решить проблему, он просто поставил вопросительные знаки перед всеми специальными символами.
Если бы кто-нибудь смог мне немного помочь, я был бы очень признателен!
Спасибо вам, ребята.
Использовать только nl2br()
при выводе HTML. Когда он хочет что-то отредактировать, оставьте все как есть; \n
символ будет проанализирован в текстовом поле (которое я предполагаю, что вы используете) в любом случае.
Да, вам нужно избежать их (и я бы посоветовал вам посмотреть на готовые заявления быть особо защищенным). Они появляются как вопросительные знаки, потому что вы, вероятно, используете латинскую кодировку в вашей базе данных, когда это должно быть UTF-8 (информация о том, как конвертировать здесь).
В общем, работа над собственной CMS — плохая идея. Так как вы все равно собираетесь это сделать, я бы посоветовал вам взглянуть на другие дыры в безопасности, с которыми вы можете столкнуться Вот).
ОБНОВИТЬ: Вместо:
<input type="hidden" name="oldtext" value="<?php echo $_text;?>">
Ты должен сделать:
<textarea name="oldtext"><?php echo $_text; ?></textarea>
И тебе даже не нужно strip_tags
, Кроме того, вам не нужно utf8_encode
,
Других решений пока нет …