Почему обратные слеши добавляются ко всем $ _GET, $ _POST автоматически? - PullRequest
0 голосов
/ 05 декабря 2010

У меня есть vps с cPanel / Whm / CentOS 5.5, и проблема в том, что все параметры, отправляемые на мой сервер, добавлены в строку , я проверил конфигурацию PHP и обнаружил, чтоМагические кавычки отключены, и я не знаю, что вызывает это.

Мой код настолько чист, и я знаю каждый его бит, и у меня нет addslashes() или каких-либо подобных функций.я только хочу получить параметры такими, какие они есть.

URL: test.php?text=blah" ' " 'blah

<?php
echo $_GET["text"]; // Output blah\" \' \" \'blah
?>

Как отключить эту вещь?

Спасибо

Ответы [ 3 ]

3 голосов
/ 05 декабря 2010

Это переменная magic_quotes_gpc в вашем php.ini (это первое место, где ее отключают). Вы действительно должны проверить, смотрите ли вы на нужный файл.

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

if(get_magic_quotes_gpc()) {

    $_POST      = array_map('stripslashes_deep', $_POST);
    $_GET       = array_map('stripslashes_deep', $_GET);
    $_COOKIE    = array_map('stripslashes_deep', $_COOKIE);
    $_REQUEST   = array_map('stripslashes_deep', $_REQUEST);
}

function stripslashes_deep($value) {

    return (is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value));
}
2 голосов
/ 05 декабря 2010
1 голос
/ 05 декабря 2010

Это (устаревшая) функция безопасности, которая называется " магические кавычки ", и ее можно отключить.

...