2013-10-03 54 views
0

我試圖登錄到使用PHP和捲曲網站。我可以登錄並設置Cookie,但是我需要向鏈接發出GET請求,並且標題應該看起來像這樣。 從HTTPLIVEHEADERS(FF)兩者。PHP捲曲登錄表單與GET/JSON麻煩

部首:

http://www.home.com/iframe/fut/p/ut/shards?_=1380785844876 

GET /iframe/fut/p/ut/shards?_=1380785844876 HTTP/1.1 
Host: www.home.com 
User-Agent: Mozilla/5.0 (Windows NT 6.3; rv:24.0) Gecko/20100101 Firefox/24.0 
Accept: application/json, text/javascript; 
Accept-Language: en-US,en;q=0.5 
Accept-Encoding: gzip, deflate 
Content-Type: application/json 
Session-Data-Nucleus-Id: 211222911 
X-UT-Embed-Error: true 
X-UT-Route: https://host2.com 
X-Requested-With: XMLHttpRequest 
Referer: http://www.home.com/iframe/fut/ 
Cookie: futweb=vk9b5ersdt0sbksooc7p8cj9k7; WEB-SESSION=vev11q6co9nlko4raeisfiqtu5;  hl=us; XSRF-TOKEN=5372d286aa1353e79c68b3d177192e5af7f96fc4; device_view=not_mobile; s_sivo=US%3AEASFW%3AFUT; s_cc=true; s_ria=flash%20not%20detected%7Csilverlight%20not%20detected; s_pv=NA%3AUS%3ASPORTS%3AEAC%3AONLINEGAME%3AFIFA%3AEASFW%3AFUT%3ALANDINGPAGE; s_nr1=1380785843058-NEW; s_sq=%5B%5BB%5D%5D; utag_main=_st:1380787644943$ses_id:1380786810666%3Bexp-session; s_ppv=100 
Connection: keep-alive 
+1

沒有PHP代碼... – Perry

+0

對不起,我其實是在尋找我張貼在我的問題是構建頭PHP代碼。任何線索? –

回答

0

我已經做了類似的任務這樣

 $ckfile = tempnam(APPPATH. "/temp", "CURLCOOKIE"); 
     remote_login($ckfile); 
     uploadData($someDataTobePosted,$ckfile); 

那麼這裏是登錄功能。

private function remote_login($ckfile) { 
    $username = USER; 
    $password = PWD; 
    $url = "https://api.safecast.org/en-US/users/sign_in"; 
    $postdata = "user[email]=" . $username . "&user[password]=" . $password; 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 60); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, $ckfile); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, $ckfile); 
    curl_setopt($ch, CURLOPT_REFERER, $url); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    $result = curl_exec($ch); 
    $this->log_cron_response($result); 
    curl_close($ch); 
} 

然後又好玩張貼或歌廳數據

private function uploadData($data,$ckfile){ 
    $ch = curl_init("https://api.safecast.org/measurements.json"); 
    $postdata = 
      "measurement[captured_at]=" . date("Y/m/d H:i:s",$data['radiation_time']/1000) 
      ."&measurement[device_id]=" . SAFE_CAST_DEVICE_ID 
      ."&measurement[unit]=" . SAFE_CAST_UNIT 
      ."&measurement[user_id]=" . SAFE_CAST_USER_ID 
      ."&measurement[value]=" . $data['radiation_value'] 
      ."&measurement[latitude]=" . $data['lat'] 
      ."&measurement[longitude]=" . $data['long']; 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 60); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, $ckfile); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, $ckfile); 
    curl_setopt($ch, CURLOPT_REFERER, "https://api.safecast.org/measurements.json"); 
    $output = curl_exec($ch); 
    $this->log_cron_response($output); 
} 

你可以用它 $ ckfile的tempnam =(APPPATH 「/ TEMP」, 「CURLCOOKIE」。); remote_login($ ckfile); $這 - > uploadData($值,$ ckfile);

+0

感謝您的回覆!您建議在瀏覽器執行GET請求時發出POST請求。你能幫我解決一些php代碼,它和我上面發佈的標題代碼一樣嗎? –