Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Экранизирование\деэкранизирование кавычек


Автор: Staind 10.1.2008, 18:57
Есть скрипт, который заносит в базу данные. Есть также скрипт, которые читает данные в базе и выводит их на экран.
Скрипт, заносящий в базу данные:
Перед заношением в базу данных я данные обрабатываю функцией mysql_escape_string.

Скрипт, читающий данные из базы:
Перед отображением удаляю экранизирующие слэши функцией stripslashes.

Есть ли другой способ деэранизирования слэшей? Через какой-нибудь if преположим?, чтобы не вызывать при отображении постоянно функцию stripslashes?

Автор: SelenIT 10.1.2008, 19:06
Все способы другие (stripslashes при выводе - это черт-те что, а не способ). http://phpfaq.ru/slashes#rightusage

Автор: Staind 10.1.2008, 20:58
По приведенной вами ссылке есть только "Как обрабатывать данные при вводе в базу". Я их предположим обработал в mysql_real_escape_string. 
Пример: 
Пользователь ввел      вцфкп'wd"
В базе это хранится теперь так    вцфкп\'wd\"
При отображении этих данных на страничке вот что появляется    вцфкп\'wd\"   
Т.е. появляется эта строка но с добавленными слэшами. Мне их как раз и нужно убирать при отображении. А убираю я их функцией stripslashes. Вот и спросил, чтобы не делать эту рутийную работу каждый раз - нету какого-нибудь другого способа?

Автор: SelenIT 10.1.2008, 21:34
Staind, читайте статью по ссылке целиком. Там написано, откуда на самом деле берутся мешающие слеши.

Автор: Sunvas 10.1.2008, 22:54
Цитата(Staind @  10.1.2008,  20:58 Найти цитируемый пост)
В базе это хранится теперь так    вцфкп\'wd\"

Очень странно. Я бы даже сказал, что такое невозможно. Вот пример:
Код

echo "\"\"\"";

В браузере будет результат НЕ \"\"\", а """. Следовательно ошибка кроется где-то у Вас в коде. Может покажете его?

Автор: SelenIT 11.1.2008, 00:25
Цитата(Sunvas @  10.1.2008,  22:54 Найти цитируемый пост)
Я бы даже сказал, что такое невозможно.

Все возможно smile. А в данном случае даже практически очевидно - magic_quotes_gpc="on"...

Цитата(Sunvas @  10.1.2008,  22:54 Найти цитируемый пост)
В браузере будет результат

Нормальные ПХП-разработчики смотрят результат работы скрипта в коде страницы, а не в браузере.

Автор: Staind 11.1.2008, 11:58
SelenIT, Вы правы, я, когда настраивал локальный сервер Апач, забыл в php.ini выставить magic_quotes_gpc="off" (и не нужно применять stripslashes) - поставил и все работает!
Т.е. при заносе в базу проверяю функцией mysql_real_escape_string, а в самой базе хранится все супер, без дурацких слэшей. Спасибо всем Вам, что помогли.
2Sunvas, Да, вы правы, функцию stripslashes убрал, спасибо большое.

Автор: GeneralElectric 11.1.2008, 17:08
Sunvas, ты путаешь содержимое строк с их синтаксисом.

SelenIT, внимательнее ;-)

Автор: MoLeX 11.1.2008, 17:15
GeneralElectric, тема помечена как решенной, не фиг ее поднимать!!!  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)