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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проблема с mysql_real_escape_string

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Как использовать при добавлении контента
metra
Отправлено: 18 Января, 2011 - 19:17:10
Post Id



Гость


Покинул форум
Сообщений всего: 85
Дата рег-ции: Янв. 2011  


Помог: 0 раз(а)




Есть форма с <textarea>, куда с помощью визуального редактора вписывается контент. В контенте естественно могут быть различные теги и т.п.

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

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

Логически мысля, можно предположить, что при выводе просто стоит делать оперцию, обратную mysql_real_escape_string, но я не нашел данной функции. Или же есть другой путь решения?
 
 Top
DeepVarvar Супермодератор
Отправлено: 18 Января, 2011 - 19:23:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




stripslashes();
 
 Top
Саныч
Отправлено: 18 Января, 2011 - 19:24:11
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




попробуйте stripslashes();

опздал... Улыбка

(Отредактировано автором: 18 Января, 2011 - 19:24:34)



-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
metra
Отправлено: 18 Января, 2011 - 19:28:32
Post Id



Гость


Покинул форум
Сообщений всего: 85
Дата рег-ции: Янв. 2011  


Помог: 0 раз(а)




Спасибо - решение проблемы на лицо)
(Добавление)
Возникла новая проблема. В БД контент для каждой страницы хранится в виде:
<p>sdffdfsd</p><b>adfdas</b>sdfsdfwwf

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

Задача - выводить укороченный текст страницы на главной размером фиксировано N количество символов текста, без учета HTML-тегов (по типу главной страницы блога), но функция обрезания строки обрезает символы вместе с HTML-тегами. Думал около 20 минут сидел - так и не надумал). Можно конечно взять кол-во символов без тегов и с тегами, вычесть и узнать кол-во символов тегов. И прибавлять это к обрезанной строке без тегов... Но тут будет каждый раз по разному (в зависимости от контента). Что недопустимо.
 
 Top
Мелкий Супермодератор
Отправлено: 18 Января, 2011 - 21:44:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




strip_tags в помощь Подмигивание


-----
PostgreSQL DBA
 
 Top
metra
Отправлено: 18 Января, 2011 - 22:36:56
Post Id



Гость


Покинул форум
Сообщений всего: 85
Дата рег-ции: Янв. 2011  


Помог: 0 раз(а)




дак эта функциия удаления HTML-тегов, но удалив их, и посчитав др. функцией кол-во знаков мне нужных (и в итоге обрезав строку без тегов) - мне нужно вывести эту строку обрезанную уже с HTML-тегами =)
 
 Top
metra
Отправлено: 19 Января, 2011 - 13:26:25
Post Id



Гость


Покинул форум
Сообщений всего: 85
Дата рег-ции: Янв. 2011  


Помог: 0 раз(а)




Подскажите пожалуйста.
 
 Top
Uchkuma
Отправлено: 19 Января, 2011 - 14:10:50
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




Первую проблему, судя по всему, вы решили неправильно, хоть и "все работает". После занесения в базу строки, обработанной с помощью mysql_real_escape_string, строка в базе должна иметь оригинальный вид, т.е. без лишних слэшей. Могу предположить, что у вас включены магические кавычки, благодаря чему вы имеете лишний уровень экранирования.

По второй проблеме думайте глубже. Обрезав строку с html-тегами вы нарушите целостность html-разметки.
 
 Top
metra
Отправлено: 19 Января, 2011 - 14:30:28
Post Id



Гость


Покинул форум
Сообщений всего: 85
Дата рег-ции: Янв. 2011  


Помог: 0 раз(а)




Uchkuma, почитал по поводу первой проблемы - т.е. если я выключю magic_quotes, то экранированная строка будет попадать в БД уже без экранирования? Т.е. нужность использования stripslashes в данной проблеме отпадает?

По поводу второй проблемы - то что обрезав строку, я нарушу целостность разметки - это я сразу же знал) Надо думать...
 
 Top
Uchkuma
Отправлено: 19 Января, 2011 - 15:05:08
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




Верно. magic_quotes вообще была большой ошибкой разработчиков php. Так же как и register_globals.
 
 Top
JustUserR
Отправлено: 19 Января, 2011 - 15:06:12
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




metra пишет:
Мне нужно вывести эту строку обрезанную уже с HTML-тегами
Для осуществления создания PHP-функции решающей предполагаемую задачу возможно использование следующей схемы - первоначально осуществяляется приведение целевого HTML-документа в соответствующий уровннь тракования внутри строкового элемента и обеспечивается его загрузки в модуль обработки XML-документов - после чего выполняется преобразование с простым текстом внутри элементов и обратная конвертация в XML-документ


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
metra
Отправлено: 19 Января, 2011 - 18:11:18
Post Id



Гость


Покинул форум
Сообщений всего: 85
Дата рег-ции: Янв. 2011  


Помог: 0 раз(а)




JustUserR, неужели для такой операции надо прибегать к формированию XML-документа и последующей работе с ней?!

Хотел все таки обойтись написанием пользовательской функции на PHP + MySQL.
Какие еще мысли у кого?
 
 Top
Мелкий Супермодератор
Отправлено: 19 Января, 2011 - 18:24:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




варианта всё равно 2: ( Радость )
0) вырезать html разметку и забыть.
1) распарсить HTML, выкусить до нужного куска, закрыть открытые теги.
И то это если считать, что визуальный редактор потрудился в правильном порядке теги закрывать.


-----
PostgreSQL DBA
 
 Top
metra
Отправлено: 19 Января, 2011 - 18:44:41
Post Id



Гость


Покинул форум
Сообщений всего: 85
Дата рег-ции: Янв. 2011  


Помог: 0 раз(а)




Я придумал - сделаю отдельное поле для ввода укороченного варианта при добавлении страницы Радость
Хотя это не решение - это обход за счет пользователя, хотя тут есть и свои плюсы.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB