0

我在使用 cURL 发送 PHP Post 请求时遇到了一些问题。

代码应该做什么:使用 Post Data访问 http://www.example.com/index.php 。

代码的作用:它将 www.example.com 加载到我运行脚本的页面中。如果我尝试使用该网站,我会收到 404 错误。

这是我的代码:

$url = 'https://www.example.com/index.php';

$fields = array(
   'info1'=>'par1',
   'info2'=>'par2'
);

$postvars='';
$sep='';
foreach($fields as $key=>$value) 
{ 
   $postvars.= $sep.urlencode($key).'='.urlencode($value); 
   $sep='&'; 
}


$ch = curl_init();

curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$postvars);

$result = curl_exec($ch);

curl_close($ch);
4

2 回答 2

0

尝试这个:

$ch = curl_init();

curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$postvars);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//Added this

$result = curl_exec($ch);

curl_close($ch);
于 2013-05-03T18:31:10.700 回答
0

每次尝试从YOUR网站打开不存在的链接时,您都会看到 404。

那是因为您的浏览器尝试打开yourwebsite.com/nicelink.php而不是example.com/nicelink.php

为什么会这样?

让我们看看你做了什么:
1)你打开 yourwebsite.com/script.php 2)脚本从 example.com 加载数据并在上下文
中将其输出到你的浏览器 3)所有链接都你的浏览器当前打开的地址无关!yourwebsite.com
<a href="nicelink.php">nice link</a>
yourwebsite.com


并使用http_build_query()

$postvars = http_build_query( $fields );

代替:

$postvars='';
$sep='';
foreach($fields as $key=>$value) 
{ 
   $postvars.= $sep.urlencode($key).'='.urlencode($value); 
   $sep='&'; 
}
于 2013-05-03T20:29:12.163 回答