Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][cURL] - Pozostanie zalogowanym
Forum PHP.pl > Forum > Przedszkole
artuross
Witam, mam problem, bo nie wiem jak zrobić, aby po zalogowaniu, przy np. następnym połączeniu być zalogowanym.

Mam taki oto kod z manuala (z komentarza):

  1. // $url = page to POST data
  2. // $ref_url = tell the server which page you came from (spoofing)
  3. // $login = true will make a clean cookie-file.
  4. // $proxy = proxy data
  5. // $proxystatus = do you use a proxy ? true/false
  6.  
  7. function
  8. curl_grab_page($url,$ref_url,$data,$login,$proxy,$proxystatus){
  9. if($login == 'true') {
  10. $fp = fopen("cookie.txt", "w");
  11. fclose($fp);
  12. }
  13. $ch = curl_init();
  14. curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
  15. curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
  16. curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
  17. curl_setopt($ch, CURLOPT_TIMEOUT, 40);
  18. curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
  19. if ($proxystatus == 'true') {
  20. curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, TRUE);
  21. curl_setopt($ch, CURLOPT_PROXY, $proxy);
  22. }
  23. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  24. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  25.  
  26. curl_setopt($ch, CURLOPT_URL, $url);
  27. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  28. curl_setopt($ch, CURLOPT_REFERER, $ref_url);
  29.  
  30. curl_setopt($ch, CURLOPT_HEADER, TRUE);
  31. curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
  32. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
  33. curl_setopt($ch, CURLOPT_POST, TRUE);
  34. curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  35. return curl_exec ($ch); // execute the curl command
  36. curl_close ($ch);
  37. unset($ch);
  38. }
  39.  
  40. echo curl_grab_page("http://localhost/login/", "http://localhost/login/", "login=LOGIN&pass=PASS", "true", "null", "false");


I faktycznie, jestem zalogowany do serwisu. Ale przy próbie otworzenia innej strony nie jestem już zalogowany. Co więcej, dane do pliku cookie.txt nie są zapisywane, gdy zmieniłem ścieżkę na DOCUMENT_ROOT to dane (ciasteczka) zostały zapisane, ale nadal nie jestem zalogowany po wczytaniu innej strony.

Czy coś takiego w ogóle jest możliwe? Przetestowałem już wiele skryptów, ale jakoś żaden nie pozwala na zalogowanie i pozostanie zalogowanym.

johny_s
a nie czyscisz sobie czasem tego pliku z ciachem?
artuross
Nie, wtedy podaję parametr false


Kolejny przykład, tym razem na upload plików. Mam taki oto skrypt:

  1. <?php
  2.  
  3. /*
  4. <a href="http://localhost/upload.php" target="_blank">http://localhost/upload.php</a>
  5. print_r($_POST);
  6. print_r($_FILES);
  7. */
  8.  
  9. $ch = curl_init();
  10.  
  11. $data = array('name' => 'Foo', 'file' => '@/home/user/test.png');
  12.  
  13. curl_setopt($ch, CURLOPT_URL, 'http://localhost/upload.php');
  14. curl_setopt($ch, CURLOPT_POST, 1);
  15. curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  16.  
  17. curl_exec($ch);
  18. ?>


Oczywiście upload.php jest w dobrym miejscu (skopiowalem wpisany adres i dzialal, wyswietlal 2x pusty Array). Powinno wydrukować na ekranie:

  1. (
  2. [name] => Foo
  3. )
  4. (
  5. [file] => Array
  6. (
  7. [name] => test.png
  8. [type] => image/png
  9. [tmp_name] => /tmp/phpcpjNeQ
  10. [error] => 0
  11. [size] => 279
  12. )
  13.  
  14. )


Tymczasem nie pokazuje nic ;(
gogol
proponuje sprawdzic w firebugu czy po zalogowaniu nie jest doklejany jakis identyfikator sesji do kazdego zapytania. jesli tak to musialbyc po zalogowaniu, z odpowiedzi zczytac ten identyfikator i pozniej go doklejac.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.