2013-02-20 48 views
0

我需要登錄到一個網站,然後它將我重定向到其他頁面,我必須發佈數據; 我已經編寫的代碼將會成功登錄到我,並將我重定向到我必須發佈(發送$ _POST)數據的頁面,但我不知道如何發佈它(使用某個會話/已經開始的cookies)這是代碼。使用curl登錄和發佈數據php

$url = "http://site.com/account.php?s_id=&d=y"; 
    $email = "[email protected]"; 
    $password = "PASS"; 
    $postfields = "email=$email&password=$password&submit=1&do=login&forward=&communicate=&communicate_id=1"; 
    $postfield = "message=doit"; 
    $cookiefile = tempnam("/tmp", "cookies"); 
    $agent  = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"; 
    $ch = curl_init(); 
    $ch2 = curl_init(); 
    curl_setopt($ch, CURLOPT_USERAGENT, $agent); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiefile); 
    curl_setopt($ch, CURLOPT_HEADER, 0); // Get the header 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // Allow redirection 
    curl_setopt($ch, CURLOPT_URL,$url); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields); 
    curl_exec($ch); 
    curl_close($ch); 
+0

你是什麼意思發佈數據?請澄清 – 2013-02-20 01:15:57

+0

將其發送爲$ _POST – Hamza 2013-02-20 01:17:00

+1

儘量不要關注位置並解析重定向答案並在隨後的調用中發帖。 – user993553 2013-02-20 01:21:06

回答

0

做相同的會話和cookie數據的後續請求,不叫curl_exec($ch);太早。只需使用相同的捲曲手柄,即可隨時更改選項。你的代碼應該是這樣的:

// do login request 
curl_exec($ch); 
echo '<hr>'; 

// change url 
curl_setopt($ch, CURLOPT_URL,$url_to_post_to); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_to_post); 

// do post request with your data 
curl_exec($ch); 

curl_close($ch);