2012-02-10 162 views
0

我正在創建一個使用PHP cURL自動發送表單的插件。它的結果是好的,但表單不是由服務器發佈的。這是爲什麼?cURL發送表單,但遠程服務器沒有發送POST

//create array of data to be posted 
$post_data['full_name'] = $name; 
$post_data['email'] = $email; 
$post_data['subscription_type'] = 'E'; 
$post_data['id'] = $id; 

//traverse array and prepare data for posting (key1=value1) 
foreach ($post_data as $key => $value) { 
    $post_items[] = $key . '=' . $value; 
} 

//create the final string to be posted using implode() 
$post_string = implode ('&', $post_items); 

//create cURL connection 
$curl_connection = curl_init($target_url); 

//set options 
curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30); 
curl_setopt($curl_connection, CURLOPT_USERAGENT,"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"); 
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1); 

//set data to be posted 
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string); 

//perform our request 
$result = curl_exec($curl_connection); 

//show information regarding the request 
print_r(curl_getinfo($curl_connection)); 
echo curl_errno($curl_connection).'-'.curl_error($curl_connection); 

//close the connection 
curl_close($curl_connection); 

這是代碼的結果。

Array ( 
[url] => http://www.remote-server.com/formcapture.php?v=28&w=29 
[content_type] => text/html 
[http_code] => 200 
[header_size] => 180 
[request_size] => 302 
[filetime] => -1 
[ssl_verify_result] => 0 
[redirect_count] => 0 
[total_time] => 0.742828 
[namelookup_time] => 0.015174 
[connect_time] => 0.062791 
[pretransfer_time] => 0.0628 
[size_upload] => 75 
[size_download] => 6122 
[speed_download] => 8241 
[speed_upload] => 100 
[download_content_length] => 6122 
[upload_content_length] => 75 
[starttransfer_time] => 0.692776 
[redirect_time] => 0 
) 0- 

這是我想發送的表單。

<form class='subscription_form' id='subscription_form' method='POST' action='http://www.remote-server.com/formcapture.php?v=28&w=29'> 
<div align='center'><center> 
<p>Full name<br><input type='text' name='full_name' size='20'></p> 
</center></div> 
<div align='center'><center> 
<p>E-mail address<br><input type='text' name='email' size='20'></p> 
</center></div> 
<input type='hidden' name='subscription_type' value='E'><div align='center'><center> 
<p><input type='submit' value='Go »'></p> 
</center></div> 
<input type='hidden' name='id' value='360'> 
</form> 

回答

0

您是否嘗試過設置cURL來返回響應頭?

curl_setopt($curl_connection, CURLOPT_HEADER, 1); 

這應該帶回您可以回顯出來的標題,並使用它來查看其他服務器正在返回的內容。

另外:

echo curl_getinfo($curl_connection, CURLINFO_HTTP_CODE); 

應帶回了HTTP響應代碼e.g 200 404 500等

+0

感謝您的想法。結果只是一塊空間。連接後,頁面到自我重定向的PHP頁面,條件由JS管理。 現在,問題是沒有條件結果給出。 – Adelion 2012-02-13 03:47:22

相關問題