我的cURL和magic_quotes有问题。
由于不同的原因,我无法关闭magic_quotes。 但我确实需要在创建CURL POST请求时禁用此功能。
在这个CURL POST请求中,我传递一个包含XML和xml开始标记的变量,如下所示:
$xml_request = ' <?xml version="1.0"?><SaleRequest> <CustomerData> <Email>alex@virtuman.com</Email> <CustomerData> <SaleRequest>';
创建curl post请求后:
$url="https://my.secureserver.com/parsexmlscript.cgi";
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "xml=".$xml_request);
curl_setopt ($ch, CURLOPT_HEADER, 0);
$result = curl_exec ($ch);
curl_close ($ch);
结果:在安全服务器上收到请求 - 第一个打开标记如下所示:
<?xml version=\"1.0\"?>
(版本属性带有魔术引号) 在这个xml解析器死后告诉我XML文档没有很好地形成。
有没有办法只为一个创建此帖子请求的脚本禁用魔术引号?
或者可能有其他方法绕过它?
非常感谢任何帮助!!!
答案 0 :(得分:2)
为什么不使用base64_encode( $xmldata )
和perl base64_decode( $incomingdata )
?
这样php就没有奇怪的字符可以编码。
另一种方法是用str_replace("'", "~~", $outgoingstring);
之类的2个代号替换所有引号,并在传入的脚本上替换它们。
答案 1 :(得分:0)
可能的步骤:
stripslashes($xml_request)
set_magic_quotes_runtime(0)
可能有所帮助php_flag magic_quotes off
可能包含在<Files specific.php>
大部分信息都在关于magic_quotes
评论将无法解答。
答案 2 :(得分:0)
试试这个:
$xml_request = str_replace("\\", "", $result);