php会自动为引号添加斜杠

时间:2011-01-17 16:59:01

标签: php xml

我想要做的就是获取xml文件内容,show是在textarea中,如果提交了for,则更新文件内容。我使用这段代码:

$fname = "../data.xml";

if (isset($_POST["update"])) {
 $content = $_POST["update"];
 $fhandle = fopen($fname,"w");
 fwrite($fhandle,$content);
}

$fhandle = fopen($fname,"r");
$content = fread($fhandle,filesize($fname));

fclose($fhandle);

当我按提交时内容会更新,但它会在引号中添加斜杠。例如这段代码:

<?xml version="1.0" encoding="utf-8"?>

变为:

<?xml version=\"1.0\" encoding=\"utf-8\"?>

如果我重新提交:

<?xml version=\\"1.0\\" encoding=\\"utf-8\\"?>

有谁能告诉我我做错了什么?

提前致谢

6 个答案:

答案 0 :(得分:11)

这可能是由于Magic Quotes。尝试disable or remove them

答案 1 :(得分:7)

这是Magic Quotes的一个问题,我们也遇到了它。在对POST输入执行任何操作之前,请在POST输入上使用stripslashes()

答案 2 :(得分:2)

magic_quotes_gpc停用php.ini

答案 3 :(得分:2)

应始终禁用魔术行情;这是一个安全风险。 如果您无法编辑配置,或者将代码放在具有无法更改的不同设置的多个服务器上,则需要使用代码进行检查。这个例子在这里找到 - &gt; http://php.robm.me.uk/#toc-MagicQuotes

function remove_magic_quotes($array) {
    foreach ($array as $k => $v) {
        if (is_array($v)) {
            $array[$k] = remove_magic_quotes($v);
        } else {
            $array[$k] = stripslashes($v);
        }
    }
    return $array;
}
if (get_magic_quotes_gpc()) {
    $_GET    = remove_magic_quotes($_GET);
    $_POST   = remove_magic_quotes($_POST);
    $_COOKIE = remove_magic_quotes($_COOKIE);
}

答案 4 :(得分:1)

您还可以通过将此行添加到.htaccess文件来禁用魔术引号:

php_flag magic_quotes_gpc Off

答案 5 :(得分:0)