PDA

Просмотр полной версии : Как отключить magic_quotes_gpc в PHP?


Goryn
19.09.2003, 12:12
Как отключить magic_quotes_gpc (добавление слешей перед спецсиволами в передаваемых данных)?

Советуют использовать функции get_magic_quotes_gpc() и stripslashes(). Но это что же, перебирать все переменные???:eek:

А есть другой способ или скрипт, который обрабатывал бу все переменные одним махом?

RaZEr
19.09.2003, 12:25
Отключить можно изменением одноименной переменной в php.ini (через php.ini или .htacess) . Сама данная ф-ия работает прозрачно и ненадо делать ни addslashes ни stripslashes.

Goryn
19.09.2003, 14:17
А какую строчку нужно добавить в .htacess ?

(насчет php.ini я уже разобрался, но вопрос с сервером у хостера - туда же я не полезу :) )

RaZEr
19.09.2003, 14:20
<IfModule mod_php4.c>
php_value magic_quotes_gpc off
</IfModule>

Goryn
19.09.2003, 15:58
Списибо, но в моем случае это не помогло
Видимо это когда PHP установлен модулем на Apache? ( у меня случай с отделоно установленным)

medved2002
19.09.2003, 17:00
ini_set("magic_quotes_gpc", "0");

RaZEr
19.09.2003, 23:59
ini_set("magic_quotes_gpc", "0");
С каких это пор magic_quotes_gpc стал PHP_INI_ALL ?

у меня случай с отделоно установленнымПопробуй создать php.ini в директории со скриптом. Туда впиши параметр этот.

BiГ
20.09.2003, 14:10
Попробуй следующее дело сделать:
1) создай в директории файл .htaccess (обязательно начинается с точки)
2) вставь в ного следующую строку: php_flag magic_quotes_gpc off
3) залей на сервак
если хостер разрешил использование файла .htaccess, то все должно прокатить
чтобы проверить сработало-ли:
1) создаешь PHP-файл со строкой <?php phpinfo(); ?>
2) заливаешь на сервак, запускаешь его
3) ищешь параметр magic_quotes_gpc, в столбце Local Value должно быть OFF

RaZEr
20.09.2003, 14:13
2 BiГ: Автор же сказал что PHP установлен не модулем.

BiГ
21.09.2003, 13:17
Извиняюсь ... не углядел .... :ooh:

medved2002
23.09.2003, 18:28
И мои извинения... привык к коллакейшн.

Добавлено через 18 минут:
МОжет банально вот так сделать?

while (list ($key, $val) = each ($_GET)) {
eval('$_GET['.$key.']="'.stripslashes($val).'";');
}

RaZEr
23.09.2003, 18:33
Почитай самое первое сообщение ...

BiГ
23.09.2003, 19:30
2Goryn: Вот, попробуй следующее, перебирает все не массивные переменные и stripslashes-ит их.

$a = 'test1: zzzzz\\zzzzz';
$b = 'test2: xxxxx\\xxxxx';

while (list ($key, $val) = each ($GLOBALS)) {
if (!is_array($val)) {
$GLOBALS[$key] = stripslashes($val);
}
}

print $a;
print '<BR>';
print $b;