19
Июл

Знакомство с Joomla 3.0 или откуда берутся слэши в коде

Мои лучшие статьи:
Волшебные кавычки или слэши в коде Joomla 3.0Вчера первый раз познакомился с Joomla 3.0. До этого предпочитал версию 2.5, так как считаю ее самой оптимальной. Как показал мой вчерашний опыт, 3.0 еще сыровата. Поэтому тем, кто использует в качестве CMS для своего сайта «джумлу», рекомендую не торопиться с обновлением. А сейчас кратко о том, с какой проблемой я вчера столкнулся. Когда я пытался что-либо отредактировать, по какой-то неизвестной мне причине в коде Joomla появлялись слэши и кавычки. Как я позже выяснил, у кодеров это называется «волшебные кавычки».

В среде разработчиков PHP существует такое понятие, как «волшебные или магические кавычки». Волшебные кавычки — эффект автоматической замены кавычки на обратный слэш и кавычку при операциях ввода/вывода в PHP.

На простом человеческом языке это будет звучать примерно так: если на вашем сайте включены «волшебные кавычки», то при редактировании кода (например в JCE редакторе): вставки таблицы, изображений и видео, перед каждыми кавычками будет добавлять слэш. А как Вам известно, кавычки в HTML встречаются очень часто. Без них не обходится не одна вставка изображения или ссылки.

Пример кода для вставки изображения:

img src="/images/stories/articles/web-construction/joomla-3-0-ili-otkuda-berutsya-shashi-v-kode.jpg" alt="Откуда берутся слэши в коде"

Тэг «img» я не стал заключать с обоих сторон в фигурные кавычки, чтобы не произошла вставка изображения.

Например, Вы решили вставить изображение на страничку, а выше написанный код заменился на этот:

img src=/"images/stories/articles/web-construction/joomla-3-0-ili-otkuda-berutsya-shashi-v-kode.jpg" alt=/"Откуда берутся слэши в коде"

Жирным я выделил слэши, которые появляются после сохранения. Так же могут появиться еще и кавычки и непонятный для Вас набор символов.

Кто это и зачем придумал, спросите Вы? Основной целью было облегчить работу начинающих программистов и позволить им избежать ошибок, связанных с безопасностью при работе с базой данных.

Хотя риск SQL инъекций при этом остается возможным, степень такого риска сводится к минимуму.

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

К тому же, с версии PHP 5.3.0 эта возможность считается устаревшей. Крайне не рекомендуется полагаться на эту возможность. Если эта опция включена, то все символы ' (одиночные кавычки), " (двойные кавычки), \ (обратный слэш) и NULL автоматически экранируются обратным слэшем. Это идентично тому, что делает функция addslashes().

Как отключить волшебные кавычки в Joomla 3.0

Чтобы этого избежать, нужно отключить «волшебные кавычки». Сделать это можно двумя простыми способами:

Редактировать .HTACCESS

В данный файл нужно добавить следующую строку:

php_flag magic_quotes_gpc Off

Или редактировать ее, если такая уже имеется и находится в состоянии On (Включено)!

Редактировать PHP.ini

Если ваш сервер работает не на Apache, или PHP работает не как cgi-bin, то требуется редактировать файл php.ini (выставить значение «Off» для ниже указанных функций):

; Magic quotes

;

; Magic quotes for incoming GET/POST/Cookie data.

magic_quotes_gpc = Off


; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.

magic_quotes_runtime = Off


; Use Sybase-style magic quotes (escape ' with '' instead of \').

magic_quotes_sybase = Off

Связаться с технической поддержкой хостинга

Если у Вас нету доступа к редактированию конфигурационного файла php.ini или .htaccess, то я бы рекомендовал Вам, в первую очередь, сменить хостера. Обратитесь за IT аутсорсингом в компанию «Стек», и они помогут Вам подобрать хороший хостинг. Если же у Вас такого желания не возникает, то обратитесь в тех.поддержку и попросите их отключить «волшебные кавычки».

Вот так просто данная проблема решается. Судя по многочисленным топикам на форумах, она волнует многих. Надеюсь, мой пост Вам поможет сэкономить нервные клетки.


Оставь комментарий, нажми «Мне нравится» («Like») и «Сохранить», а я напишу для тебя еще что-нибудь интересное :)
 

Обо мне

MeЭто Я! Выпускник факультета «ТЭ» Южно-Уральского Государственного Университета.
"Не судите человека, пока не поговорите с ним лично, потому что все что вы слышите - слухи", - Майкл Джексон.


RSS блога Ритм ЖизниШичкин Сергей в Twitter