2013-10-03 4 views
0

J'essaie de me connecter à un site Web en utilisant php et curl. Je peux me connecter et créer des cookies mais je dois faire une demande GET à un lien et l'en-tête devrait ressembler à ceci. Extrait de HTTPLIVEHEADERS (FF).PHP CURL LOGIN FORM avec GET/JSON Trouble

HEADER:

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

Il n'y a pas de code php ... – Perry

+0

désolé, je cherchais en fait du code PHP qui construit l'en-tête que j'ai posté dans ma question. Une idée? –

Répondre

0

je l'ai fait la même tâche comme celui-ci

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

puis est fonction pour se connecter ici.

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); 
} 

puis un autre plaisir pour l'affichage ou les données geting

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); 
} 

vous pouvez l'utiliser $ ckfile = tempnam (APPPATH "/ temp", "CURLCOOKIE".); remote_login ($ ckfile); $ this-> uploadData ($ value, $ ckfile);

+0

merci pour votre réponse! Vous proposez de faire une demande POST pendant que mon navigateur fait une demande GET. Pouvez-vous m'aider avec un code PHP qui fait la même chose que le code d'en-tête que j'ai posté ci-dessus? –