|
Веб-курсы Что это? Оглавление Основы Основы основ Практика Гостевая книга Простой сайт Структура сайта (MVC) Ядро (Light) Ядро Гостевая на SQL Статические страницы Модуль новостей Система регистрации Теория Дебаггинг Регулярные выражения Введение в ООП Паттерны проектирования Репозитарий BB-code Почтовый класс Пагинатор Всякие полезности Download Полезные утилиты Разное Видеокурсы Последние изменения Вопросы и замечания сюда Реклама Диеты для похудения Фреймворк Kohana. Обучение. Мануал на русском. |
Магические кавычкиТак называемые "магические кавычки" (magic_quotes_gpc), это одна из ошибок разработчиков языка. Получилось это по принципу "хотелось как лучше, получилось как всегда". Дело в том, что при взаимодействии PHP с базами данных, запрос передается простым текстом. А в языке SQL используются кавычки и апострофы. Так вот что бы они не испортили запрос, будучи полученными по HTTP протоколу от юзера, их нужно экранировать обратным слэшем. Разработчики языка решили облегчить жизнь программистам, и придумали такую директиву. Если этот механизм включен, все поступающие извне кавычки и апострофы будут немедленно и безоговорочно экранированы. Это касается суперглобальных массивов GET, POST и COOKIE. Ну и как производный REQUEST. Отсюда и эти три буквы magic_quotes_gpc Благое вроде намерение, но что оказалось. Данные, поступающие в скрипт, совсем не обязательно должны попасть в БД. А бэкслэш им уже приляпан. Вот давайте посмотрим. Откройте блокнот и напишите туда это:
Теперь сделаем такой скриптик:
Вот если теперь написать в поле O'Rally, старого знакомого, то получится O\'Rally, что совсем не одно и то же. По этому нужно эту директиву отключить сразу и не надеяться на магию. Кроме того, в 6-й версии php эта директива будет убрана совсем. Делается это в том же файле .htaccess, просто поставив значение Off
А еще лучше сделать это в скрипте, что бы он не зависел от внешних настроек. Делается это так:
Тоесть мы смотрим, включена ли директива. Если да - рекурсивно очищаем массивы от бэкслэшей. Вот и вся недолга. Магия в сказках хороша, а тут нужно только на себя надеяться |