2014-12-02 149 views
0

我必须使用PHP发出请求帖子,但我无法使其工作。低html请求作品PHP发布请求

<form action="http://example.com/form.php" method="post" id="form-success"> 
<input type="hidden" name="id" id="itemid" value="12345"> 
<input type="hidden" name="key" id="sh" value="79c830e5bf78218685a350cd5df3cdac"> 
<input type="submit"/> 
</form> 

我试过这两种方式来请求在PHP中,但都不起作用。

$content = http_build_query(array('id'=>'12345','key'=>'79c830e5bf78218685a350cd5df3cdac')); 

$context = stream_context_create(array(
    'http' => array(
     'method' => 'POST', 
     'content' => $content, 
    ) 
)); 

$result = file_get_contents('http://example.com/form.php', null, $context); 

echo $result; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "http://example.com/form.php"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, array('id'=>'12345','key'=>'79c830e5bf78218685a350cd5df3cdac'); 

$pagina = curl_exec ($ch); 

echo $pagina; 

没有错误消息,只知道该网页无法正确重定向。 有什么想法? 谢谢

+2

可能是服务器阻止某些用户代理(或没有用户代理字符串)。尝试将用户代理字符串添加到curl http://davidwalsh.name/set-user-agent-php-curl-spoof – 2014-12-02 10:53:50

+0

当您提交表单时,您将被重定向到form.php,其中包含$ _POST中的数据。究竟是什么,不工作?你想要达到什么目的? – 2014-12-02 10:54:31

+0

改变用户代理不工作! – 2014-12-02 11:36:00

回答

0

我用这个:

function file_get_contents_post($url, $var_post = array()) { 
    define('MULTIPART_BOUNDARY', '--------------------------'.microtime(true)); 
    $header = 'Content-Type: multipart/form-data; boundary='.MULTIPART_BOUNDARY; 
    $content = '' ; 

    foreach ($var_post as $key => $value) { 
     $content .= "--".MULTIPART_BOUNDARY."\r\n". 
        "Content-Disposition: form-data; name=\"".$key."\"\r\n\r\n". 
        $value."\r\n"; 
    } 

    $content .= "--".MULTIPART_BOUNDARY."--\r\n"; 

    $context = stream_context_create(array(
     'http' => array(
       'method' => 'POST', 
       'header' => $header, 
       'content' => $content, 
     ) 
    )); 
    return file_get_contents($url, false, $context) ; 
} 
+0

没有工作,仍然是同样的问题。 – 2014-12-02 11:31:30