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 :: twig, обратные слеши

 PHP.SU

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


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

> Без описания
Gefest
Отправлено: 18 Июня, 2010 - 22:04:39
Post Id


Новичок


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


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




Не так давно стал изучать этот шаблонизатор, все бы хорошо, но вот проблема, вывод из базы кавычек, экранированных обратным слешем так и выводятся напрямую, раньше это решалось функцией stripslashes(). Кто-нибудь сталкивался с этой проблемой?
 
 Top
alexspb
Отправлено: 18 Июня, 2010 - 22:23:50
Post Id


Посетитель


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


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




Если стрипслэшис не помогает, может они экранированы уже в базе (вставили уже так)? не пробовали посмотреть на прямую?


-----
Хостинг - неограниченно доменов на одну папку
Ajax - отличное введение
 
 Top
Gefest
Отправлено: 18 Июня, 2010 - 22:38:26
Post Id


Новичок


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


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




Все дело в том, что шаблонизатор не использует эту функцию
 
 Top
evgenijj
Отправлено: 19 Июня, 2010 - 04:17:30
Post Id



Участник


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


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




Вообще, использование stripslashes() -- моветон. Не надо добавлять обратные слеши -- и проблема пропадет. Я позволю себе процитировать:
Цитата:
При включенной директиве конфигурации magic_quotes_gpc PHP автоматически добавляет слеши к строковым значениям в массиве $GLOBALS (это относится не только к данным в $_POST, $_GET, $_COOKIE, $_REQUEST, но и к данным в $_SERVER, $_FILES, $_ENV, $_SESSION). Вдобавок, при включенной директиве magic_quotes_runtime, слеши добавляются к данным полученым во время работы скрипта (например, из файла, базы данных).
.....
Проще всего отключить директивы в php.ini:
magic_quotes_gpc = Off
magic_quotes_runtime = Off.
magic_quotes_sybase = Off
.....
В 6 версии PHP от магических закавычиваний отказались и оставленные в целях обратной совметимости get_magic_quotes_gpc и get_magic_quotes_runtime будут всегда возвращать false.


Варианты решения:
1. Обматерить хостера, и указать ему, что все уже давно отказались от "магического" закавычивания
2. Если не поможет -- прописать в .htaccess
php_flag magic_quotes_gpc Off
php_flag magic_quotes_runtime Off
 
 Top
JustUserR
Отправлено: 19 Июня, 2010 - 11:28:37
Post Id



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


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


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




Gefest пишет:
Вывод из базы кавычек, экранированных обратным слешем так и выводятся напрямую
Дело в том что экранирование и шифрование данных это вовсе не одно и то же - например у вас есть определенная группа спецсимволов которые будут восприняты парсером как управляющие символы а вам нужно избежать этого Суть шифрование заключается в том что вы производите некоторое изменение исходного текста и исключаете из него спецсимволы по определенному алгоритму - и в таком случае когда вы их извлекаете обратно то нужно делать дешифрование В случае экранирования все спецсимволы помечаются специальным экранирующим символом типа обратного слеша - и в таком случае парсер трактует их не как управляющие символы а как простые сохраняемые данные - однако после того как эти данные прошли парсер и сохранились то в реальном представлении данных они уже будут находится без всяких экранирующих символов - и соответственно при обратном считывании данных и не надо разэкранировать
По этой причине если при считывании данных из БД они находятся в лишнем закэранированном слое - то это значит что при записи данных произошла двойная экранировка - например функцией mysql_real_escape_string и неявной опцией magic_quotes
evgenijj пишет:
Варианты решения
Если хостер предоставляет использование CGI-скриптом - то можно попросту постаить свою версию интерпретатора PHP со своими любыми настройками - и использовать его для обработки PHP-скриптов путем установки собственных Handler-ов в файле .htaccess


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


Новичок


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


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




Спасибо за советы, попробую.
 
 Top
JustUserR
Отправлено: 20 Июня, 2010 - 13:07:44
Post Id



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


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


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




Gefest пишет:
Спасибо за советы, попробую.
Пожалуйста! Можете также проверить не используете ли вы специальный класс доступа к БД или функции препарирования - в таком случае данные могут экранироваться автоматически и при попытке ручного экранирования при последующем выводе также будут появляться лишний уровень экранирования
В принципе можно попробовать удалить лишний уровень экранирования и при выводе - для этого включить перед использованием шаблонизатора буферазицию и потом передайте весь сгененированный им HTML-код в фунцию stripslahes - но это нужно деалть осторожно и с предварительной проверкой чтобы не удалить необходимые закэранированные элементы напрмер в JS-коде


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB