PHP Curl将'\'添加到发送给PHP但是基于ASP的服务器的撇号字符

时间:2011-04-06 23:59:01

标签: php curl

我有一个基于第三方ASP的服务器,它有一个PHP页面,它接收表单数据。在我的网页上,我有一个PHP脚本,它使用curl将字段发送到PHP页面。除非用户在文本中包含撇号字符,否则一切正常!在后端,它被收到“\”。

甚至更奇怪的是,它只能从我托管的网站上执行此操作。当我在本地测试它工作正常。

我的托管网站没有控件。我只需要处理我的php curl函数。

它在我的本地主机上运行良好。

这是示例代码

  $this->headers[] = 'Accept: '. $_SERVER['HTTP_ACCEPT'];
    $this->headers[] = 'Connection: Keep-Alive';
    $this->headers[] = 'Content-type: application/x-www-form-urlencoded;charset=UTF-8';
    $post_var = 'post='.urlencode(stripslashes("it's Me Ali"));

    $this->ch = curl_init();
    curl_setopt($this->ch, CURLOPT_HTTPHEADER,      $this->headers);
    curl_setopt($this->ch, CURLOPT_HEADER,          FALSE);
    curl_setopt($this->ch, CURLOPT_USERAGENT,       $this->USER_AGENT);
    curl_setopt($this->ch, CURLOPT_COOKIEFILE,      $this->cookie);
    curl_setopt($this->ch, CURLOPT_COOKIEJAR,       $this->cookie);
    curl_setopt($this->ch, CURLOPT_COOKIE,          $strCookie = 'PHPSESSID=' . $_COOKIE['PHPSESSID'] . '; path=/');
    curl_setopt($this->ch, CURLOPT_ENCODING,        "gzip");
    curl_setopt($this->ch, CURLOPT_RETURNTRANSFER,  TRUE);
    curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION,  TRUE);

    curl_setopt($this->ch, CURLOPT_URL,         'http://www.example.com/form.php');
    curl_setopt($this->ch, CURLOPT_POST,        TRUE);
    curl_setopt($this->ch, CURLOPT_POSTFIELDS,  $post_var);

    $get_page = curl_exec($this->ch);
    echo $get_page;
    curl_close($this->ch);

1 个答案:

答案 0 :(得分:1)

Magic_quotes已启用,这不一定是好事,因为它现在被视为已弃用。

您只能在ini文件中启用此功能。如果你不能,请使用strip_slashes删除它们。

您可以遍历您的get和post vars以删除页面顶部的斜杠。