Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][curl]Logowanie na strone wysylajaca kilka ciasteczek
Forum PHP.pl > Forum > Przedszkole
ptaku
Witam.
Szukalem na forum i w googlu i nie znalazlem, wiec pytam.
Wykorzystuje biblioteke curl do pobierania danych z wielu stron i tworzenia jednego raportu.
Ale mam problem z jedna strona na ktora nie moge sie zalogowac, problem tkwi w tym ze strona wysyla kilka plikow z ciastkami na innych stronach jest tylko jeden plik i bez problemu sie loguje i pobieram dane.
Sprawdzilem w firefoxie.
Gdy wchodze na strone (niezalogowany) sa to nastepujace ciastka: cookie_counter, cookie_test, PHPSSID.
Gdy jestem zalogowany : cookie_counter, PHPSSID, cookie_user.

Ominalem problem: zalogowalem sie normalnie, pobralem dane z ciastek i wygenerowalem dane w skrypcie. Wszystko dziala ale tylko przez krotki czas. Potem znowu musze powtarzac to samo.

Czy jest jakis sposob zeby to ominac i zeby skrypt za kazdym razem sam sie logowal??

Z gory dzieki za pomoc
erix
A pokaż, jakim kodem wysyłasz żądanie? Z tego, co mi wiadomo, to COOKIE_JAR może zachować dowolną liczbę ciastek (tyle, ile przeglądarka).
bełdzio
dodaj nastepnujace flagi
  1. <?php
  2. curl_setopt( $curl, CURLOPT_COOKIEFILE, 'plik.txt' );
  3. curl_setopt( $curl, CURLOPT_COOKIEJAR, 'plik.txt' );
  4. ?>
ptaku
Kod który uzywam do logowania (niedzialajacy) DZIALA NA INNYCH STRONACH:
Kod
   <?php
    
      $cookie = '.\cookie.txt'; /* œcieżka do pliku cookie */
       $loginUrl = 'http://strona.com';
       $login = '***';
       $haslo = '***';
       $txtcheck = 'login';
       $useragent = 'Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3';
    
       $ch = curl_init( $loginUrl );
       curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, 0 );
       curl_setopt( $ch, CURLOPT_COOKIEFILE, $cookie );
       curl_setopt( $ch, CURLOPT_COOKIEJAR, $cookie );
       curl_setopt( $ch, CURLOPT_COOKIE, $cookie);
       curl_setopt( $ch, CURLOPT_USERAGENT, $useragent );
       curl_setopt( $ch, CURLOPT_POST, true );
       curl_setopt( $ch, CURLOPT_POSTFIELDS, array ('txtuser'=> "$login" , 'txtpass' => "$haslo", 'txtcheck' => "$txtcheck" ));
       curl_setopt( $ch, CURLOPT_REFERER, 'http://netload.in/' );
       curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
       $afterLogin = curl_exec($ch);
       curl_close($ch);
       echo $afterLogin;
     ?>

Dziala on bez problemu na innych stronach

Kod ktory dziala (ale krotko):
Kod
   <?php
       $cookie = 'cookie_counter=' . urlencode('1236183321') . '; PHPSESSID=' . urlencode('f3e3b54c3352fea455e339119437ccca') . '; cookie_user=' . urlencode ('%3A%241%24XUyrY7fy%246ml6r7GMhvvnIIVOCB8Om%2F');
    
       $ch = curl_init('http://netload.in/');
       curl_setopt( $ch, CURLOPT_HEADER, 0);
       curl_setopt( $ch, CURLOPT_COOKIE, $cookie);
       curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);
       $wynik = curl_exec($ch);
       echo $wynik;
     ?>
erix
Cytat
$cookie = '.\cookie.txt'; /* œcieżka do pliku cookie */

Może się mylę, ale coś mi tu ścieżka nie pasuje.
ptaku
To tez zmienialem ale dokladnie taki kod dziala mi z innymi stronami bez problemu, cookie jest przechowywane zo zamkniecia sesji curl i moge chodzic po stronie jak mi sie podoba. Jak sprawdzam zawartsc cookie posiada ona tylko pliki wysylane przed zalogowaniem ale nie aktualizuje sie po wyslaniu danych do formularza.
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.