我尝试运行服务器配置safe_mode: ON
和open_basedir option is set
的基本cURL POST(下面)。我的托管服务提供商表示这是出于安全目的,我的代码必须在下面的PHP 5.2版本中运行(他们的版本是PHP 5.4)。到目前为止,当我运行代码时,它始终返回数组而没有任何参数。是否有另一种方法可以有效地将数据发布到这样的远程服务器。感谢。
simplepost.php (在localhost中)
<?php
//
// A very simple PHP example that sends a HTTP POST to a remote site
//
$ch = curl_init();
// basic cURL option
curl_setopt($ch, CURLOPT_URL,"http://voulsa.qwords.org/test.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
"number=12345&status=SUCCESS&msg=OK");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// receive return value from remote server
$html = curl_exec($ch);
curl_close($ch);
echo($html);
?>
test.php (在远程网站中)
<?php
print_r($_POST);
?>
答案 0 :(得分:0)
问题是您的网站正在返回HTTP 301响应,重定向
http://voulsa.qwords.org/test.php
到
http://www.voulsa.qwords.org/test.php
回复是
HTTP/1.1 301 Moved Permanently
Date: Sat, 26 Apr 2014 11:22:12 GMT
Server: Apache
Location: http://www.voulsa.qwords.org/test.php
Content-Length: 245
Content-Type: text/html; charset=iso-8859-1
现在,如果您可以启用CURLOPT_FOLLOWLOCATION设置,这将不会出现问题,但由于您的托管公司的限制,您不能这样做。
最简单的解决方法是直接查询www.voulsa.qwords.org,例如将simplepost.php中的URL更改为: -
curl_setopt($ch, CURLOPT_URL,"http://www.voulsa.qwords.org/test.php");
新网址(已启用CURLOPT_HEADER)的响应为: -
HTTP/1.1 200 OK
Date: Sat, 26 Apr 2014 10:56:54 GMT
Server: Apache
X-Powered-By: PHP/5.3.19
Transfer-Encoding: chunked
Content-Type: text/html
Array
(
[number] => 12345
[status] => SUCCESS
[msg] => OK
)
我没有更改除URL以外的任何内容并启用CURLOPT_HEADER和CURLOPT_VERBOSE,但适用于我的代码是: -
$ch = curl_init();
// basic cURL option
curl_setopt($ch, CURLOPT_URL,"http://www.voulsa.qwords.org/test.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, "number=12345&status=SUCCESS&msg=OK");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// receive return value from remote server
$html = curl_exec($ch);
curl_close($ch);
echo($html);