CURL和magic_quotes

时间:2011-04-07 00:59:06

标签: php curl

我的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文档没有很好地形成。

有没有办法只为一个创建此帖子请求的脚本禁用魔术引号?

或者可能有其他方法绕过它?

非常感谢任何帮助!!!

3 个答案:

答案 0 :(得分:2)

为什么不使用base64_encode( $xmldata )和perl base64_decode( $incomingdata )

这样php就没有奇怪的字符可以编码。

另一种方法是用str_replace("'", "~~", $outgoingstring);之类的2个代号替换所有引号,并在传入的脚本上替换它们。

答案 1 :(得分:0)

可能的步骤:

  • 在实际代码中尝试stripslashes($xml_request)
  • 在2003年set_magic_quotes_runtime(0)可能有所帮助
  • .htaccess php_flag magic_quotes off可能包含在<Files specific.php>

大部分信息都在关于magic_quotes

的PHP手册中

评论将无法解答。

答案 2 :(得分:0)

试试这个:

$xml_request = str_replace("\\", "", $result);