ugrás a tartalomhoz

Php cURL

foszto · 2010. Május. 27. (Cs), 10.23
Szeretnék curl-el bejelentkezni egy oldalra, majd az ott kapott egyik url-en továbbmenni úgy hogy közeben megmaradjon a Session. Íme a kód:
  1. $url='https://url.url/pl.pl?akarmi';  
  2.   
  3.   
  4. $post = array ('login' => 'user''key' => 'pass');  
  5. $post = http_build_query($post);  
  6.   
  7.   
  8.   
  9. $cookie=dirname(__FILE__) .'/cookie.txt';  
  10. echo $cookie;  
  11.   
  12. $options = array(  
  13.            CURLOPT_URL => $url,  
  14.            CURLOPT_RETURNTRANSFER => 1,  
  15.            CURLOPT_CONNECTTIMEOUT => 5 ,  
  16.            CURLOPT_MAXREDIRS      => 5,  
  17.            CURLOPT_REFERER => $url,  
  18.         CURLOPT_FOLLOWLOCATION => TRUE,  
  19.         CURLOPT_POST => 1,  
  20.         CURLOPT_POSTFIELDS => $post,  
  21.         CURLOPT_USERAGENT => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)",  
  22.         CURLOPT_HEADER => FALSE,  
  23.         CURLOPT_COOKIEJAR => $cookie,  
  24.         //CURLOPT_COOKIE => 'cookie=c',  
  25.         CURLOPT_COOKIEFILE => $cookie,  
  26.         CURLOPT_SSL_VERIFYPEER => FALSE,  
  27.         CURLOPT_SSL_VERIFYHOST => 2            
  28. );  
  29. $ch = curl_init();  
  30. curl_setopt_array($ch$options);  
  31.   
  32. $result = curl_exec($ch);  
  33.   
  34. $tmp_url= get_next_url($result);  
  35. $post = get_params($result);  
  36.       
  37. curl_setopt($ch, CURLOPT_URL, $tmp_url);  
  38. curl_setopt($ch, CURLOPT_POSTFIELDS, $post);  
  39.   
  40. $result = curl_exec($ch);  
  41. echo curl_error($ch);  
  42.   
  43. curl_close($ch);  
  44.   
  45. echo $result;  
Az eredményekből kiderül, hogy helyesen végigmegy az oldalon, sikeresen bejelentkezik. Mekapja az új url-t de a sessiont nem viszi magával. Valamért a cookie.txt üres marad. Írásjog van az adott állományon (0777) kipróbáltam winserveren és linuxon. De ugyanaz az eredmény, szóval valami hiba a kódba kell, hogy legyen ezek szerint.
Ha valakinek van ötlete...
 
1

Nekem van egy scriptem

szmegma · 2010. Jún. 12. (Szo), 11.20
Nekem ez a kod van bejelenkezni mas oldalakra. Probalad meg hatha tudod alkalmazni.
  1. <?  
  2. $username = 'felhasznalonevem';  
  3. $password = 'jelszavam';  
  4. $cim = 'http://oldal.hu/';  
  5. $id = '*****';  
  6.   
  7. $agent = $_SERVER['HTTP_USER_AGENT'];  
  8. $adat = "username="$username ."&password="$password//itt a ket valtozot az oldalon hasznalt input mezo name ertekere kell allitani  
  9. $ci = curl_init();  
  10. curl_setopt ($ci, CURLOPT_URL, $cim . "login.php"); //itt megadod a fajt ami kezeli az $adat-ot  
  11. curl_setopt ($ci, CURLOPT_SSL_VERIFYPEER, FALSE);  
  12. curl_setopt ($ci, CURLOPT_USERAGENT, $agent);  
  13. curl_setopt ($ci, CURLOPT_TIMEOUT, 20);  
  14. curl_setopt ($ci, CURLOPT_CONNECTTIMEOUT, 20);  
  15. curl_setopt ($ci, CURLOPT_FOLLOWLOCATION, 1);  
  16. curl_setopt ($ci, CURLOPT_RETURNTRANSFER, 1);  
  17. curl_setopt ($ci, CURLOPT_REFERER, $cim."index.php"); //itt megadhatsz egy referer fajlt  
  18. curl_setopt ($ci, CURLOPT_POSTFIELDS, $adat);  
  19. curl_setopt ($ci, CURLOPT_POST, 1);  
  20. curl_setopt ($ci, CURLOPT_URL, $cim . "valami.php?id=".$id); //ez a celoldalra vezet  
  21. $eredmeny = curl_exec ($ci);  
  22.   
  23. curl_close($ci);  
  24.   
  25. echo $eredmeny;  
  26. ?>