[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: magic_quotes_gpс
Ka4_0k
Ещё есть места где эта вещь остаётся включенной. И плюс ещё и пхп установлен отдельно, а не как мод апача. Так вот как кто относится к данной вещи? Стоит ли доверять? У меня то на локалке есстесна офф, но вот если проверка get_magic_quotes_gpc покажет что они включены как бороться? Делать stripslashes мне кажется глупым потому что в тексте могут быть свои слэшы. С другой стороны доверять полностью magic_quotes_gpc тоже глупо. А делать mysql_real_escape_string поверх magic_quotes_gpc чтобы получить
Цитата
\"текст\"
не хочется по понятным причинам smile.gif)
Может кто-нибудь предложить сколько-нибудь более приемлемое решение?



Спустя 5 минут, 1 секунда (25.10.2009 - 23:44) FatCat написал(а):
Отключить через эйчтиакцесс...

Спустя 4 минуты, 2 секунды (25.10.2009 - 23:49) Ka4_0k написал(а):
Цитата
php_flag magic_quotes_gpc Off
Спасибо, нашёл
Я правда когда-то читал что управление директивами пхп через htaccess не всегда срабатывает...
Как раз ведь не сработает если пхп установлен не как модуль апача.

Спустя 7 минут, 50 секунд (25.10.2009 - 23:56) kirik написал(а):
Цитата (Ka4_0k @ 25.10.2009 - 15:49)
Я правда когда-то читал что управление директивами пхп через htaccess не всегда срабатывает...

Ага, поэтому нужно обрабатывать все входящие значения stripslashes();

Спустя 3 минуты, 37 секунд (26.10.2009 - 00:00) Ka4_0k написал(а):
Цитата (kirik @ 25.10.2009 - 20:56)
Цитата (Ka4_0k @ 25.10.2009 - 15:49)
Я правда когда-то читал что управление директивами пхп через htaccess не всегда срабатывает...

Ага, поэтому нужно обрабатывать все входящие значения stripslashes();

А если в тексте, например в тексте комента есть свои слэши?smile.gif

Спустя 27 минут, 41 секунда (26.10.2009 - 00:28) Gram написал(а):
PHP
// функция восстановления испорченных входных параметров
 
function reset_stripslashes($mixed)
 {
   if (
is_array($mixed))
   {
     
$mixed=array_map('reset_stripslashes'$mixed);
     foreach (
$mixed as $key => $value)
     {
       
// обнуляем массив, чтоб не получилось повторной обработки обработанных элементов
       // не уверен в необходимости, но на всякий случай
       
$arr = array();
       
$keynew stripslashes($key);
       if (
$keynew !== $key)
       {
         
$mixed[$keynew] = $mixed[$key];
         unset(
$mixed[$key]);
       }
       
$arr $mixed;
     }
    return 
$mixed;
   }
   else
   {
     return 
stripslashes($mixed);
   }
 }

 
// если магические кавычки включены, применяем функцию
 
if(get_magic_quotes_gpc())
 {
   
$_POST reset_stripslashes($_POST);
   
$_GET reset_stripslashes($_GET);
   
$_COOKIE reset_stripslashes($_COOKIE);
 }

Спустя 1 минута, 25 секунд (26.10.2009 - 00:29) Gram написал(а):
Кстати, хотелось бы спросить мнение экспертов по этому коду. Не сильно накрутил, просто переживаю за обработку ключей?

Спустя 7 минут, 46 секунд (26.10.2009 - 00:37) Ka4_0k написал(а):
Gram, omg blink.gif Мне кажется должен быть более короткий способ решения smile.gif
З.Ы. И более корректынй smile.gif) Даже я нашёл уже пару излишков.

Спустя 3 минуты, 42 секунды (26.10.2009 - 00:41) glock18 написал(а):
Ka4_0k
вообще говоря, если есть свои слеши, то они удвоятся магическими кавычками

юзать
get_magic_quotes_gpc + strip_slashes и все. ничего лишнего не съест.

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

array_walk_recursive() - одна строка.

Спустя 1 минута, 24 секунды (26.10.2009 - 00:42) twin написал(а):
Gram
мыслил правильно, но наверно просто не знаешь что такое рекурсия...
А нужные бэкслэши не пропадают. Они магическими кавычками удваиваются. Да просто проверь да и всё.

PHP
function stripslashes_deep($data)    
    
{    
        if
(is_array($data))     
            $data 
= array_map("stripslashes_deep", $data);     
        else   
            $data 
= stripslashes($data);
            return  $data;     
    
}

    if(get_magic_quotes_gpc()) 
    
{ 
    $_GET 
= stripslashes_deep($_GET);  
    $_POST 
= stripslashes_deep($_POST);  
    $_COOKIE 
= stripslashes_deep($_COOKIE); 
    
}

Этого обычно достаточно...

Спустя 1 минута, 21 секунда (26.10.2009 - 00:43) Ka4_0k написал(а):
Цитата
Ka4_0k
вообще говоря, если есть свои слеши, то они удвоятся магическими кавычками

юзать
get_magic_quotes_gpc + strip_slashes и все. ничего лишнего не съест.

Цитата
А нужные бэкслэши не пропадают. Они магическими кавычками удваиваются. Да просто проверь да и всё.

Если уже у 2-х экспертов одинаковые мнения, то так тому и быть:) Спаибо, пойду пробовать.

Спустя 1 минута, 25 секунд (26.10.2009 - 00:45) glock18 написал(а):
нафиг, array_map + stripslashes_deep ежли одной строкой это делается

Спустя 1 минута, 4 секунды (26.10.2009 - 00:46) twin написал(а):
тож факт)))

Спустя 9 минут, 32 секунды (26.10.2009 - 00:55) kirik написал(а):
Цитата (twin @ 25.10.2009 - 16:42)
Этого обычно достаточно...

Лучше еще и ключи обрабатывать..

Цитата (glock18 @ 25.10.2009 - 16:45)
нафиг, array_map + stripslashes_deep ежли одной строкой это делается

А если массив не одноуровневый?

Спустя 7 минут, 29 секунд (26.10.2009 - 01:03) Gram написал(а):
Вот я по этому и спрашивал. Но как говорит glock, все зависит от программиста - просто не давать ключам состоять из любых символов, а обязательно фильтровать данные, если они могут стать ключами.

Спустя 2 минуты, 38 секунд (26.10.2009 - 01:05) kirik написал(а):
Но полюбому ключи нужно хотя бы проверять smile.gif Вдруг когда-нибудь понадобится вставить в запрос ключ..

Спустя 5 минут, 31 секунда (26.10.2009 - 01:11) Gram написал(а):
Ну если в запросе всегда применять mysql_real_escape_string, то максимум будет ошибка выборки данных.

Спустя 23 минуты, 3 секунды (26.10.2009 - 01:34) kirik написал(а):
Цитата (Gram @ 25.10.2009 - 17:11)
то максимум будет ошибка выборки данных

во-во.. из-за каких-то непонятных "волшебных кавычек" smile.gif

Спустя 7 минут, 1 секунда (26.10.2009 - 01:41) Gram написал(а):
Не страшней sql инъекции )

Спустя 7 часов, 4 минуты, 52 секунды (26.10.2009 - 08:46) glock18 написал(а):
насчет вставки в запрос ключика поля:

часто вы называете ключики словами с использованием слэшей и кавычек? у меня обычно это чисто символьная строка.

kirik
array_walk_recursive() применяется рекурсивно. Не проверял слишком придирчиво, но должно работать что надо.

Спустя 45 минут, 21 секунда (26.10.2009 - 09:31) kirik написал(а):
Цитата (glock18 @ 26.10.2009 - 00:46)
часто вы называете ключики словами с использованием слэшей и кавычек?

Нет не часто.. точнее ни разу smile.gif

Цитата (glock18 @ 26.10.2009 - 00:46)
array_walk_recursive() применяется рекурсивно.

Пойдет smile.gif


_____________
-Oh My God! They Killed Kenny!
-You Bastards!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.