Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z CURLem
Forum PHP.pl > Forum > PHP
Amman
Mianowicie. Uczę się PHP od niedawna, i ostatnio wzięło mnie na stworzenie statystyk. Ale dane, jakich potrzebuję, są dostępne tylko po zalogowaniu. Wygooglałem, że potrzebuję ogarnąć CURLa do tego. Ale czego bym nie próbował, nie jestem w stanie się przez logowanie przecisnąć. Przeczytałem kilka (naście?) tutoriali na ten temat, wypróbowałem chyba każdy możliwy sposób, nie mam pojęcia jak się przedostać dalej.

Strona na jaką próbuję się zalogować to http://poke-life.net/ (wiem, możecie się śmiać, ale brałem pierwszą z brzegu która mi przyszła do głowy) z adresem skryptu logowania http://poke-life.net/logowanie.php. Widoczny tam jest prosty formularz POST, myślałem że byłby dobry na początek, bo nie wydawał mi się specjalnie skomplikowany, żadnych httpsów i innych bajerów.

Kod który na chwilę obecną wygląda nieciekawie, bo pod koniec już tylko wrzucałem nowe rzeczy mając nadzieję że zadziała, wygląda tak:
  1. <html>
  2. <head>
  3. <title>(podejscie do CURLa, nieudane)</title>
  4. <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
  5. </head>
  6. <body>
  7. <?php
  8.  
  9. $ch = curl_init();
  10. curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');
  11. curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');
  12. curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
  13. curl_setopt($ch, CURLOPT_USERPWD, 'testtest3:testtest');
  14. curl_setopt($ch, CURLOPT_URL,"http://poke-life.net/logowanie.php");
  15. curl_setopt($ch, CURLOPT_POST, 1);
  16. curl_setopt($ch, CURLOPT_POSTFIELDS, "username=testtest3&haslo=testtest");
  17. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  18. ob_start(); // prevent any output
  19. curl_exec ($ch); // execute the curl command
  20. ob_end_clean(); // stop preventing output
  21.  
  22.  
  23. curl_close ($ch);
  24. unset($ch);
  25.  
  26. $ch = curl_init();
  27. curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
  28. curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');
  29. curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');
  30. curl_setopt($ch, CURLOPT_URL,"http://poke-life.net/trening.php");
  31. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  32. $buf2 = curl_exec ($ch);
  33.  
  34. curl_close ($ch);
  35.  
  36. echo "<PRE>",$buf2;
  37.  
  38. $zmienna = file_get_contents('http://poke-life.net/trening.php'); //pobiera strone
  39.  
  40.  
  41. echo "<BR><HR><CENTER>WERSJA PROSTA</CENTER>";
  42. echo $zmienna; // Wyświetli kod HTML strony bez logowania
  43.  
  44. ?>
  45. </body>
  46. </html>

Można go znaleźć pod adresem http://skryptoland.c0.pl/test2.php . Hasło i login są podane w kodzie, lecz podam jeszcze tutaj, możecie używać jeśli chcecie:
Login: testtest3
Hasło: testtest

Z góry dzięki za wskazówki lub rozwiązanie, jak i wytknięcie czemu nie działa.
Pozdrawiam
Amman
RiE
  1. $url = 'http://poke-life.net/logowanie.php';
  2. $fields = 'login=testtest3&haslo=testtest';
  3.  
  4.  
  5. $ch = curl_init();
  6. curl_setopt($ch, CURLOPT_URL, $url);
  7. curl_setopt($ch, CURLOPT_POST, 1);
  8. curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
  9. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  10. curl_setopt($ch, CURLOPT_HEADER, 1);
  11. curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . './poke.txt');
  12. curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . './poke.txt');
  13. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  14. $response = curl_exec($ch);
  15. echo $response;
  16.  
  17. curl_close($ch);
Amman
Nie wiem czemu, nie wyświetla mi się nic jak skopiowałem Twój kod... ;/

EDIT: Działa, ale tylko u mnie na WAMPie, nie działa na serwerze, więc to musi być wina serwera na którym hostuję stronkę... wygląda na to że cba.pl nie ma wbudowanego CURLa... Można go w jakiś sposób tam doinstalować, czy cos w tym stylu...?

EDIT2: Po szybkim googlaniu dowiedziałem się że nie da rady. Dziękuję za pomoc, może wcześniej sam bym doszedł gdyby nie to że sprawdzałem skrypty zaraz na serwerze zamiast najpierw lokalnie ;P
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.