PHP如何防止PHP转义html fopen fwrite

时间:2012-06-19 19:14:15

标签: php html escaping

我正在尝试创建一个允许我更轻松地创建HTML文档的应用程序。

除了当我写入文件时它添加反斜杠时,它主要起作用。

<a href=\"google.com\">google</a>

知道如何阻止它这样做吗?

我得到了它的工作!如果我在将它写入文件之前我的stripslashes()它将保存/创建文件没有\ 谢谢你的帮助!

4 个答案:

答案 0 :(得分:2)

可能是因为魔术引号打开了,如果你不想每次都使用stripslashes,你应该在php.ini文件中或者像htaccess文件中那样禁用它们这样:

php.ini 文件中:

magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off

.htaccess 文件:

php_flag magic_quotes_gpc Off

或者直接在代码中禁用它们:

if (get_magic_quotes_gpc()) {
    $process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
    while (list($key, $val) = each($process)) {
        foreach ($val as $k => $v) {
            unset($process[$key][$k]);
            if (is_array($v)) {
                $process[$key][stripslashes($k)] = $v;
                $process[] = &$process[$key][stripslashes($k)];
            } else {
                $process[$key][stripslashes($k)] = stripslashes($v);
            }
        }
    }
    unset($process);
}

来源:http://php.net/manual/en/security.magicquotes.disabling.php

答案 1 :(得分:1)

如果您使用单引号字符串,则不应使用带反斜杠的转义双引号,因为它们按字面解释。

来自docs

  

注意:与双引号和heredoc语法不同,特殊字符的变量和转义序列在单引号字符串中不会扩展。

答案 2 :(得分:1)

此行为是由PHP已弃用的Magic Quotes指令引起的,您的仍处于激活状态,因为默认情况下,在5.4之前的任何默认PHP安装中都是如此。除非您指定长度参数,否则fwrite会查看magic-quotes-runtime以查看它是否会逃脱。

将其关闭,你可以放置

php_flag magic_quotes_gpc Off

.htaccess文件中,您需要使用apache DSO来允许此选项

或者你可以disable it in php.ini

如果由于您在共享主机上或出于其他原因而无法执行上述任一操作,请在代码中解决此问题。

function write($resource,$string,$length)
    if (get_magic_quotes_gpc()) {
        $string = stripslashes($string);

    }
    return fwrite($resource, $string,$length);
}

答案 3 :(得分:0)

我有一个类似的问题,但有一个$ _POST ['body']变量。这对我有用:

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