[英]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
此行为是由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.