2015-04-19 241 views
1

我正在嘗試使用cURL將一些表單數據發佈到網站。這不是一個安全的網站,也不需要登錄。它只是一個用於獲取某些信息的表單。無法使用cURL POST POST

表單是here,表單操作是對同一頁面(它是土耳其語)。這是我怎麼一直試圖發送在PHP中POST請求:

$headers = array(
    "content-length: 138", 
    "accept-language: en-US,en;q=0.8", 
    "accept-encoding: gzip, deflate", 
    "referer: http://objektifsonuc.com/", 
    "content-type: application/x-www-form-urlencoded", 
    "user-agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36", 
    "origin: http://objektifsonuc.com", 
    "accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", 
    "cache-control: max-age=0", 
    "connection: keep-alive" 
    "host: objektifsonuc.com" 
); 

$query="il=1&ilce=1%3B18&okul=1%3B18%3B743729%3BTEOGS%2CSBS&sinav=100%3BTEOGS&sinif=8&ogrno=1941&ograd=BERKANT+%DDPEK&ogr=%D6%F0renci+Veli+Giri%FE"; 

$url = "http://objektifsonuc.com/index.php"; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $query); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
echo curl_exec($ch); 

當前的結果:表單頁面呈現

期望的結果:含有一些表不同的頁面呈現

以下是有效的表單輸入:

Şehir: ADANA 
İlçe: SARIÇAM 
Okul: Hacı Özcan Sinağ Ortaokulu 
Sınav Türü: TEOGS | ADANA İL MİLLİ EĞİTİM OKDS 
Sınıf: 8 
Öğrenci No: 1941 
Öğrenci Ad: BERKANT İPEK 

這裏是wha t時的形式如下填寫:

Filled-out form page

以下是Chrome的一個成功的POST請求採取的形式標題:

POST /index.php HTTP/1.1 
Host: objektifsonuc.com 
Connection: keep-alive 
Content-Length: 138 
Cache-Control: max-age=0 
Origin: http://objektifsonuc.com 
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36 
Content-Type: application/x-www-form-urlencoded 
DNT: 1 
Referer: http://objektifsonuc.com/index.php 
Accept-Encoding: gzip, deflate 
Accept-Language: en-US,en;q=0.8 

這裏是POST正文:

il=1&ilce=1%3B18&okul=1%3B18%3B743729%3BTEOGS%2CSBS&sinav=100%3BTEOGS&sinif=8&ogrno=1941&ograd=BERKANT+%DDPEK&ogr=%D6%F0renci+Veli+Giri%FE 

我很難過。什麼導致POST失敗?任何人都可以讓這個POST成功嗎?

+0

嘗試添加用戶代理參數來你的捲曲的要求嗎? – RamRaider

+0

oops - 我在標題數組中看到useragent。但是,您在curl請求中發送的cookie值對於新請求無效 - 我認爲您必須首先獲取該頁面並在POST請求中使用該cookie。 – RamRaider

回答

1

這應該爲你工作:

//open connection 

$url = 'http://objektifsonuc.com/index.php'; 

$string = 'il=1&ilce=1%3B18&okul=1%3B18%3B743729%3BTEOGS%2CSBS&sinav=100%3BTEOGS&sinif=8&ogrno=1941&ograd=BERKANT+%DDPEK&ogr=%D6%F0renci+Veli+Giri%FE'; 

$ch = curl_init(); 

//set the url, number of POST vars, POST data 
curl_setopt($ch,CURLOPT_URL, $url); 
curl_setopt($ch,CURLOPT_POST, count($string)); 
curl_setopt($ch,CURLOPT_POSTFIELDS, $string); 

//execute post 
$result = curl_exec($ch); 

//close connection 
curl_close($ch); 
+0

對不起,不起作用。 _fewer_頭怎麼能成爲更好的解決方案? – Drakes