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

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

Но при передаче, в полученной строке обычно перед кавычками стояли знаки «/» , что в простонародье называется экранирование. Включается в настроечном файле php.ini на вашем сервере. Называются они  Magic Quotes

Проще всего отключить их в php.ini, если (ничоси!) у вас есть доступ к этому файлу на хостинге. (Об этом чуть ниже). Но имейте в виду, что этот способ подразумевает отключение экранирования кавычек на всем вашем сервере, и на всех ваших сайтах, расположенных там же. Что не всегда нужно.

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

Два способа отключения экранирования кавычек

Способ 1. Конфигурационный файл php.ini


; Волшебные кавычки
;

; Волшебные кавычки для входных данных GET/POST/Cookie.
magic_quotes_gpc = Off

; Волшебные кавычки для данных, поступающих во время выполнения (например, данные из SQL, из exec() и т.д).
magic_quotes_runtime = Off

; Использование волшебных кавычек в стиле Sybase (экранирование ' с помощью '' вместо \').
magic_quotes_sybase = Off

Способ 2. По ходу выполнения  скрипта

Добавьте этот код в нужное место , где у вас используется передача данных методом GET или POST

if (get_magic_quotes_gpc()) {
$process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
while (list($key, $val) = each($process)) {
foreach ($val as $k => $v) {
unset($process[$key][$k]);
if (is_array($v)) {
$process[$key][stripslashes($k)] = $v;
$process[] = &$process[$key][stripslashes($k)];
} else {
$process[$key][stripslashes($k)] = stripslashes($v);
}
}
}
unset($process);
}


 

Источиник — официальная документация PHP

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *