繁体   English   中英

PHP如何防止PHP转义html fopen fwrite

[英]PHP how to prevent PHP from escaping html fopen fwrite

我正在尝试开发一个使我能够更轻松地创建HTML文档的应用程序。

除了我在写入文件时添加反斜杠外,它几乎可以正常工作。

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

知道如何阻止它执行此操作吗?

我懂了! 如果我在将其写入文件之前将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

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

文档

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

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

将其关闭,您可以放置

php_flag magic_quotes_gpc Off

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

或者您可以在php.ini中禁用它

如果由于共享主机或其他原因而无法执行上述任何一项操作,请使用代码解决。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM