Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]{Curl} Logowanie za pomocą Curl'a i pobieranie danych.
Forum PHP.pl > Forum > Przedszkole
Rewil
Jednak dalej błąd ;/
  1. Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir is set in /home/gamin/domains/gamingpl.com
  2. /public_html/global/curl.php on line 14


  1. function connect_curl($url, $post='')
  2. {
  3. $curl=curl_init();
  4. curl_setopt($curl, CURLOPT_URL, $url);
  5. curl_setopt($curl, CURLOPT_REFERER, "http://gamingpl.com");
  6. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
  7. curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3');
  8. curl_setopt($curl, CURLOPT_TIMEOUT, 30);
  9. curl_setopt($curl, CURLOPT_HEADER, 0);
  10. if(strlen($post)>0)
  11. {
  12. curl_setopt($curl, CURLOPT_POST, 1);
  13. curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
  14. }
  15. $strona=curl_exec($curl);
  16. echo $strona;
  17. curl_close($curl);
  18. }
  19.  
  20. connect_curl('http://www.gambling-affiliation.com/_front/login.php', $post='_qf__authentification=&login=&password=&type=0&submit=Connexion');
smietek
Wywal FOLLOWLOCATION i zamiast tego dodaj
COOKIEJAR, COOKIEFILE, HEADER na 1, i gdy połączysz się już ze stroną logowania, pobierasz stronę docelową, na którą strona Cie kieruje za pomocą preg_matcha.
Rewil
  1. function connect_curl($url, $post='')
  2. {
  3. $curl=curl_init();
  4. curl_setopt($curl, CURLOPT_URL, $url);
  5. curl_setopt($curl, CURLOPT_REFERER, "http://gamingpl.com");
  6. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 0);
  7. curl_setopt($curl, CURLOPT_COOKIEJAR, 1);
  8. curl_setopt($curl, CURLOPT_COOKIEFILE, 1);
  9. curl_setopt($curl, CURLOPT_HEADER, 1);
  10. curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3');
  11. curl_setopt($curl, CURLOPT_TIMEOUT, 30);
  12. curl_setopt($curl, CURLOPT_HEADER, 0);
  13. if(strlen($post)>0)
  14. {
  15. curl_setopt($curl, CURLOPT_POST, 1);
  16. curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
  17. }
  18. $strona=curl_exec($curl);
  19. curl_close($curl);
  20. }
  21.  
  22. connect_curl('http://www.gambling-affiliation.com/en/index.html', $post='');
  23. echo $strona;


Aktualizacja kodu, to nie to. Dalej nic nie wyświetla(pusta strona);
Fifi209


Cytat(Rewil @ 29.06.2010, 22:20:37 ) *
  1. function connect_curl($url, $post='')
  2. {
  3. $curl=curl_init();
  4. curl_setopt($curl, CURLOPT_URL, $url);
  5. curl_setopt($curl, CURLOPT_REFERER, "http://gamingpl.com");
  6. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 0);
  7. curl_setopt($curl, CURLOPT_COOKIEJAR, 1);
  8. curl_setopt($curl, CURLOPT_COOKIEFILE, 1);
  9. curl_setopt($curl, CURLOPT_HEADER, 1);
  10. curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3');
  11. curl_setopt($curl, CURLOPT_TIMEOUT, 30);
  12. curl_setopt($curl, CURLOPT_HEADER, 0);
  13. if(strlen($post)>0)
  14. {
  15. curl_setopt($curl, CURLOPT_POST, 1);
  16. curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
  17. }
  18. $strona=curl_exec($curl);
  19. curl_close($curl);
  20. }
  21.  
  22. connect_curl('http://www.gambling-affiliation.com/en/index.html', $post='');
  23. echo $strona;


Aktualizacja kodu, to nie to. Dalej nic nie wyświetla(pusta strona);


Cytat(smietek @ 29.06.2010, 18:34:07 ) *
pobierasz stronę docelową, na którą strona Cie kieruje za pomocą preg_matcha.


Przerabiaj dalej ;]
Rewil
Cytat
pobierasz stronę docelową, na którą strona Cie kieruje za pomocą preg_matcha.

Ale kłopot w tym, jak mam coś przerobić jak tej strony nie pobiera? Inny adres jak się wpisze, czy coś jest spoko. Natomiast z domeny "http://www.gambling-affiliation.com/" wyświetla białą stronę (pustą) ;]

Nikt nie ma jakiś rad? Jest jakaś możliwość zablokowania Curl'a żeby nie był w stanie pobrać czegoś z daniej strony? Bo tylko problem mam z tą jedną...
Fifi209
COOKIEJAR i COOKIEFILE nie przyjmują 1 czy 0 tylko ścieżkę do pliku gdzie ów ciacho ma zostać zapisane.
smietek
  1. curl_setopt($curl, CURLOPT_HEADER, 0);

To ma być na 1 i wtedy pokaże Ci się tekst zawierający NAGŁÓWKI w którym będziesz miał coś podobnego do: Location: adres_strony.
To właśnie to jest adres, na który strona Cię przekierowuje...

#fifi209
Mi nie chodziło o to, że zwrot strony pobiera pregiem, tylko właściwą stronę, na którą przekierowuje strona przez nagłówek...
Fifi209
Cytat(smietek @ 5.07.2010, 19:09:26 ) *
  1. curl_setopt($curl, CURLOPT_HEADER, 0);

To ma być na 1 i wtedy pokaże Ci się tekst zawierający NAGŁÓWKI w którym będziesz miał coś podobnego do: Location: adres_strony.
To właśnie to jest adres, na który strona Cię przekierowuje...

#fifi209
Mi nie chodziło o to, że zwrot strony pobiera pregiem, tylko właściwą stronę, na którą przekierowuje strona przez nagłówek...


a czy ja na HEADER zwracałem uwagę? Przeczytaj o czym pisałem...
Rewil
Coś tam już wyłapało z tego headera, ale curl zmienił(dodał) folder w adresie:
Cytat

Zamiast przejść nim na stronę:
Cytat

I z niej pobrać zawartość.

Z tymi przy cookie poprawiłem:
  1. curl_setopt($curl, CURLOPT_COOKIEJAR, 'cookie.txt');
  2. curl_setopt($curl, CURLOPT_COOKIEFILE, 'cookie.txt');

Ale i tak mi to zapisywało jako pliki o nazwie 1, więc to raczej nie o to chodzi.

W sumie to teraz porobiłem kilka plików, jak logowanie, strona1, strona2, wyloguj i po kolei je otwierając wyszedł zamierzony efekt, ale nie da się tego jakoś napisać w jednym pliku?
smietek
Oczywiście, że możesz. Tylko musisz za każdym razem zmieniać URL (i ew. dane POST), a potem curl_exec. Cookies i nagłówki są ustawiane na stałe w Curl.
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.