我们有一个运行 PHP 5.3 的服务器,带有魔术引号:
magic_quotes_gpc 开 开
magic_quotes_runtime 关 关
每当我们收到一个 POST (CONTENT_TYPE: application/x-www-form-urlencoded) ,其中包含未清理的 XML(在元素有效负载中有引号、&、<、>),SimpleXML 无法解析它。
当我查看原始 $_POST 转储时,XML 从第一个非法字符开始被截断。以前从未见过。
然后,我添加了 htmlspecialchars,一切都很好,XML 能够被 SimpleXML 解析。
$payload = htmlspecialchars(stripslashes(trim($postXMLPayload)));
这表明完整的,尽管非法的 XML 确实在 $_POST 数组中,但是当我尝试查看它时,它被截断了。
我正在通过电子邮件发送 $_POST 中的值并对其进行数据库化,在这两种情况下,$_POST 中的值都被截断。
这是我获取 $_POST 值的方法
if(isset($_POST)){
foreach($_POST as $k=>$v){
if(preg_match('/^\<\?xml/',trim($v))){
$postXMLPayload = $v;
break;
}
}
}
有人可以解释一下吗?
谢谢