PHP Post请求-停留在同一页面


PHP Post Request - Stays on the same Page

我用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);

试试这个:

$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);

每次打开YOUR网站上不存在的链接都会看到404

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

为什么会发生这种情况?

让我们看看你是怎么做的:
1)打开yourwebsite.com/script.php
2)脚本从example.com加载数据并将其输出到yourwebsite.com上下文中的浏览器
3)所有的链接,如<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='&'; 
}