Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Чем фильтруется POST запрос?


Автор: InfMag 24.5.2006, 14:52
Вот, делаю сайт и появился один геморой.
У меня дома пост запросы идут как обычно, но если заливаю на хостинг, то на нем обрабатываются ковычки " и '. Потом они становятся вот так: \" и \'
У меня такое подозрение, что это зделано специально, чтобы не запортачили mysql базы, но я все свои запросы пропускаю через функцию mysql_escape_string() и что мне теперь делать?
Стоит просто писать так?:
Код

$_POST['var'] = str_replace('\"', '"', $_POST['var']);
$_POST['var'] = str_replace("\'", "'", $_POST['var']);
  

Автор: Vaulter 24.5.2006, 16:06
InfMag, это настройка в php.ini
magic_quotes
кажется так зовется.
просто придется проверять или попробуй отключить в начале всех скриптов (set_magic_quotes_runtime) 

Автор: InfMag 24.5.2006, 16:14
Vaulter, как именно отключить? 

Автор: sugee 24.5.2006, 17:11
set_magic_quotes_runtime ( 0 ); 

Автор: Vaulter 24.5.2006, 17:16
InfMag,  smile  

Автор: InfMag 24.5.2006, 17:22
sugee, не помогло, счас буду плакатЪ  smile

Добавлено @ 17:23 
Может все-таки на хостинге ограничения? Надо проверить на другом.

Добавлено @ 17:36 
Ни на том ни на другом сервере магиг квотез не отключается... smile
Есть еще варианты? 

Автор: Vaulter 24.5.2006, 17:47
InfMag, сделай проверку
Код

if(get_magic_quotes_runtime()) 
 while(list($ind,$val) = each($_POST))
  $_POST[$ind] = str_replace(array('\\"','\\\''),array('"',"'"),$val);

если не углядел:
первый параметр аррэй с
1. заслэшенным слэшем и дв. кавычкой
2. заслэшенным слэшем и од. кавычкой

второй, на что менять
1. дв. кавычка
2. од. кавычка

в принципе, не гарант, что все работает smile
проверяй, эксперементируй 

Автор: InfMag 24.5.2006, 18:15
Vaulter, а почему тут написано именно 2а слэша и для одинарной 3и?

Добавлено @ 18:25 
Блин, никак не хочет работать.
Я даже попробовал по одному слэшу поставить. никак...
Код

<?php
    if (get_magic_quotes_runtime())
        while (list($ind, $val) = each($_POST))
            $_POST[$ind] = str_replace(array('\"', "\'"), array('"', '"'), $val);
?>
 

Автор: Mal Hack 24.5.2006, 19:04
Господи, зачем все так сложно... runtime несколько другое, тут
magic_quotes_gpc надо обрабатывать. И делсть array_reqursive, а не while'ы писать. 

Автор: InfMag 24.5.2006, 19:45
Mal Hack, не понял, писать просто magic_quotes_gpc(0) или же так?:
Код

<?php
    if (magic_quotes_gpc())
        array_reqursive(list($ind, $val) = each($_POST))
            $_POST[$ind] = str_replace(array('\"', "\'"), array('"', '"'), $val);
?>
 

Автор: InfMag 24.5.2006, 20:02
Mal Hack, Все то что я попробовал не работает, а если писать:
Код

    if (magic_quotes_gpc())
        array_reqursive(list($ind, $val) = each($_POST))
            $_POST[$ind] = str_replace(array('\"', "\'"), array('"', '"'), $val);

То все встает в ступор и страница вобще дальше не выводится. 

Автор: Mal Hack 24.5.2006, 20:14
InfMag, а ты в мануале почитай, что делает array_reqursive. 

Автор: InfMag 24.5.2006, 20:34
Mal Hack, Спасибо канешь, но я уже вот чем обошелся:
Код

<?php
    if (get_magic_quotes_gpc() == 1)
        while (list($ind, $val) = each($_POST))
            $_POST[$ind] = stripslashes($val);
?>

Работает! Ура! smile

Mal Hack, +1 

Автор: Mal Hack 24.5.2006, 20:51
Господи, ну блин,НУ ЗАЧЕМ Я ДАВАЛ array_reqursive ??????

Добавлено @ 20:54 
array_walk тобишь
Код
if (get_magic_quotes_gpc() == 1)
array_walk( $_POST , "stripslaches" );

 

Автор: madFobos 24.5.2006, 21:47
Не проще кинуть в папку файл .htaccess со строкой
php_flag magic_quotes_gpc Off
?
 

Автор: Mal Hack 24.5.2006, 21:52
madFobos, проще, в принципе, еще и runtime заблочить нафиг...
Хотя тут подумать надо. С одной стороны и легче, с другой же иногда бывает лучше в скрипте проверять. Лично я пока не готов дать 100% ответна этот вопрос.й 

Автор: InfMag 24.5.2006, 22:21
Mal Hack, то что ты написал не пашет...

Добавлено @ 22:23 
madFobos, неа, просто я расчитываю на заказчика, и допустим вдруг нет доступа к htaccess. 

Автор: madFobos 24.5.2006, 22:40
Цитата(InfMag @  24.5.2006,  22:21 Найти цитируемый пост)
неа, просто я расчитываю на заказчика, и допустим вдруг нет доступа к htaccess.  


Он всегда есть, насколько я знаю. Если только у тебя вместо Apachee что-нибудь другое не стоит...

Цитата(Mal Hack @  24.5.2006,  21:52 Найти цитируемый пост)
madFobos, проще, в принципе, еще и runtime заблочить нафиг...
Хотя тут подумать надо. С одной стороны и легче, с другой же иногда бывает лучше в скрипте проверять. Лично я пока не готов дать 100% ответна этот вопрос.й  


Да я вобще обычно PEAR:smileB использую, так что эта проблема меня обычно стороной обходит  smile  

Автор: Mal Hack 24.5.2006, 23:02
Малость наврал, посмотрев не туда.
Код
<?php
$ar = array("skldfjsl\"d\"fff","skldfjsl\"d\"fff","skldfjsl\"d\"fff","skldfjsl\"d\"fff");
//if (get_magic_quotes_gpc() == 1)
$ar = array_map( "stripslashes"  , $ar);
print_r( $ar )
?>
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)