Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Проблема с mysql_real_escape_string
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Проблема с mysql_real_escape_string

Страниц (1): [1]
 

1. metra - 18 Января, 2011 - 19:17:10 - перейти к сообщению
Есть форма с <textarea>, куда с помощью визуального редактора вписывается контент. В контенте естественно могут быть различные теги и т.п.

Для безопасного (защита от SQL Injection) внесения в БД использую функцию mysql_real_escape_string.

Но когда надо вывести из БД контент этот, выводится все некорректно, ибо при добавлении различные знаки, типа " или ' и т.п. экранируются слешем.

Логически мысля, можно предположить, что при выводе просто стоит делать оперцию, обратную mysql_real_escape_string, но я не нашел данной функции. Или же есть другой путь решения?
2. DeepVarvar - 18 Января, 2011 - 19:23:15 - перейти к сообщению
stripslashes();
3. Саныч - 18 Января, 2011 - 19:24:11 - перейти к сообщению
попробуйте stripslashes();

опздал... Улыбка
4. metra - 18 Января, 2011 - 19:28:32 - перейти к сообщению
Спасибо - решение проблемы на лицо)
(Добавление)
Возникла новая проблема. В БД контент для каждой страницы хранится в виде:
<p>sdffdfsd</p><b>adfdas</b>sdfsdfwwf

и т.п. т.е. - текст с HTML разметкой.

Задача - выводить укороченный текст страницы на главной размером фиксировано N количество символов текста, без учета HTML-тегов (по типу главной страницы блога), но функция обрезания строки обрезает символы вместе с HTML-тегами. Думал около 20 минут сидел - так и не надумал). Можно конечно взять кол-во символов без тегов и с тегами, вычесть и узнать кол-во символов тегов. И прибавлять это к обрезанной строке без тегов... Но тут будет каждый раз по разному (в зависимости от контента). Что недопустимо.
5. Мелкий - 18 Января, 2011 - 21:44:04 - перейти к сообщению
strip_tags в помощь Подмигивание
6. metra - 18 Января, 2011 - 22:36:56 - перейти к сообщению
дак эта функциия удаления HTML-тегов, но удалив их, и посчитав др. функцией кол-во знаков мне нужных (и в итоге обрезав строку без тегов) - мне нужно вывести эту строку обрезанную уже с HTML-тегами =)
7. metra - 19 Января, 2011 - 13:26:25 - перейти к сообщению
Подскажите пожалуйста.
8. Uchkuma - 19 Января, 2011 - 14:10:50 - перейти к сообщению
Первую проблему, судя по всему, вы решили неправильно, хоть и "все работает". После занесения в базу строки, обработанной с помощью mysql_real_escape_string, строка в базе должна иметь оригинальный вид, т.е. без лишних слэшей. Могу предположить, что у вас включены магические кавычки, благодаря чему вы имеете лишний уровень экранирования.

По второй проблеме думайте глубже. Обрезав строку с html-тегами вы нарушите целостность html-разметки.
9. metra - 19 Января, 2011 - 14:30:28 - перейти к сообщению
Uchkuma, почитал по поводу первой проблемы - т.е. если я выключю magic_quotes, то экранированная строка будет попадать в БД уже без экранирования? Т.е. нужность использования stripslashes в данной проблеме отпадает?

По поводу второй проблемы - то что обрезав строку, я нарушу целостность разметки - это я сразу же знал) Надо думать...
10. Uchkuma - 19 Января, 2011 - 15:05:08 - перейти к сообщению
Верно. magic_quotes вообще была большой ошибкой разработчиков php. Так же как и register_globals.
11. JustUserR - 19 Января, 2011 - 15:06:12 - перейти к сообщению
metra пишет:
Мне нужно вывести эту строку обрезанную уже с HTML-тегами
Для осуществления создания PHP-функции решающей предполагаемую задачу возможно использование следующей схемы - первоначально осуществяляется приведение целевого HTML-документа в соответствующий уровннь тракования внутри строкового элемента и обеспечивается его загрузки в модуль обработки XML-документов - после чего выполняется преобразование с простым текстом внутри элементов и обратная конвертация в XML-документ
12. metra - 19 Января, 2011 - 18:11:18 - перейти к сообщению
JustUserR, неужели для такой операции надо прибегать к формированию XML-документа и последующей работе с ней?!

Хотел все таки обойтись написанием пользовательской функции на PHP + MySQL.
Какие еще мысли у кого?
13. Мелкий - 19 Января, 2011 - 18:24:59 - перейти к сообщению
варианта всё равно 2: ( Радость )
0) вырезать html разметку и забыть.
1) распарсить HTML, выкусить до нужного куска, закрыть открытые теги.
И то это если считать, что визуальный редактор потрудился в правильном порядке теги закрывать.
14. metra - 19 Января, 2011 - 18:44:41 - перейти к сообщению
Я придумал - сделаю отдельное поле для ввода укороченного варианта при добавлении страницы Радость
Хотя это не решение - это обход за счет пользователя, хотя тут есть и свои плюсы.

 

Powered by ExBB FM 1.0 RC1