Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Curl logowanie
Forum PHP.pl > Forum > PHP
Zyggmunt
Witam. Próbuję zalogować się do serwisu www.reporo.com korzystając z curl, jednak męczę się z tym od kilku dni i nie mam pojęcia czemu nie działa. Po prostu nie wysyła danych do formularza logowania. Po zalogowaniu użyłem header(...); w celu przekierowania na odpowiednią stronę dostępną po zalogowaniu. Bardzo proszę o sprawdzenie co może być źle w tym kodzie. Zaznaczam, że strona jest na protokole HTTPS.

Oto kod:
  1. <?php
  2. function createPostString($aPostFields) {
  3. foreach ($aPostFields as $key => $value) {
  4. $aPostFields[$key] = urlencode($key . '=' . $value);
  5. }
  6.  
  7. return urlencode(implode('&', $aPostFields));
  8. }
  9.  
  10. $postFields['username'] = $_POST['login'];
  11. $postFields['password'] = $_POST['password'];
  12. $postFields['submit'] = ' ';
  13.  
  14. $curl = curl_init();
  15. curl_setopt($curl, CURLOPT_URL, 'https://www.reporo.com/login.php');
  16. curl_setopt($curl, CURLOPT_REFERER, 'https://www.reporo.com/login.php');
  17. curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13');
  18. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false);
  19. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  20. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
  21. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  22. curl_setopt($curl, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');
  23. curl_setopt($curl, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');
  24. curl_setopt($curl, CURLOPT_POST, TRUE);
  25.  
  26. curl_setopt($curl, CURLOPT_POSTFIELDS, createPostString($postFields));
  27.  
  28. curl_exec($curl);
  29. curl_close($curl)
  30.  
  31. ?>


Co może być tego przyczyną ?

P.s. Plik cookies.txt zawiera:
www.reporo.com FALSE / FALSE 0 PHPSESSID 97..idSesji123..

Pozdrawiam.
darko
Dodaj jeszcze:
  1. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
  2. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
Zyggmunt
Edytowałem kod w pierwszym poście o poradę darko. Niestety logowanie nadal nie działa, tj. dzieje się to co wcześniej ;/

Pozdrawiam.
darko
Sprawdź jeszcze raz poprawność urla, zwłaszcza parametrów oraz ścieżki do ciastek.
Zyggmunt
Faktycznie link do ciastek był zły, ponieważ skrypt odpalałem z Wampa, a więc wychodziła taka ścieżka: C:\wamp\www\autofill/cookies.txt . Jednak wgrałem skrypt na serwer i ścieżka już jest z pewnością prawidłowa, mimo to nadal nie działa ;/ Próbowałem też skorzystać z adresu: http://www...pl/katalog/cookies.txt i to również nie pomogło ;/ Nie wiem czy z ta stroną jest coś nie tak, czy ja robię coś źle ;/
darko
Formularz nie posiada tokena, i wydaje mi się, że problem tkwi w Twojej funkcji, powinieneś chyba na samym końcu zwrócić urlencode, wtedy zakoduje Ci znak '=' :

  1. function createPostString($aPostFields) {
  2. foreach ($aPostFields as $key => $value) {
  3. $aPostFields[$key] = urlencode($key . '=' . $value);
  4. }
  5.  
  6. return urlencode(implode('&', $aPostFields));
  7. }


Zyggmunt
Aktualny kod w pierwszym poście, niestety nadal nie działa ;/
  1. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false);
zmieniłem na false, bo wyświetlił się błąd, że nie może być na true razem z:
  1. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);



Być może problem jest z cookies ? Poszukując rozwiązania natrafiłem na skrypt logowania do facebooka: http://www.daniweb.com/web-development/php...login-with-curl Jak można zauważyć autor odpowiednio buduje plik cookies. Być może coś podobnego trzeba zrobić w przypadku tej strony ?

Podejrzewam, że sporo informacji można zdobyć przy użyciu LiveHttpHeaders, jednak nie wiem czemu nie uzupełnia mi okienka po zalogowaniu mimo zaznaczonej opcji capture.

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.