Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wyciąganie informacji z strony
Forum PHP.pl > Forum > Przedszkole
Mati010
Witajcie, mam zrobiony skrypt logowania prze CURL, i takie pytanie bo nie mam pomysłu jak zrobić, aby pobrać dane z kodu strony po zalogowaniu questionmark.gif

Kod logowania:
  1. $f['ips_username'] = 'Login';
  2. $f['ips_password'] = 'haslo';
  3. $f['rememberMe'] = '1';
  4. $f['anonymous'] = '1';
  5. $f['referer'] = 'http://stronka/index.php?';
  6. $f['auth_key'] = '880ea6a14ea49e853634fbdc5015a024';
  7. $f['input_submit'] = 'Zaloguj';
  8.  
  9. $ch = curl_init();
  10. curl_setopt($ch, CURL_TIMEOUT, 120);
  11. curl_setopt($ch, CURL_RETURNTRANSFER, 0);
  12. curl_setopt($ch, CURLOPT_URL, "http://stronka/index.php?app=core&module=global&section=login&do=process");
  13. curl_setopt($ch, CURL_POST, 1);
  14. curl_setopt($ch, CURLOPT_POSTFIELDS, $f);
  15. curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1 );
  16. curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');
  17. curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');
  18. curl_exec($ch);
  19. curl_close($ch);
  20.  


Chciałbym, żeby skrypt pobrał i wyświetlił:

  1. <input type='hidden' name='kodzidopobrania' value='qwerty' />
  2. <input type='hidden' name='kodzidopobrania2' value='qwerty123' />


Prosiłbym o pomoc z góry dzięki.


Dałem radę w połowie z tym mianowicie

  1. $host = "http://stronka/index.php?";
  2.  
  3. $curl = curl_init($host);
  4. curl_setopt($curl, CURLOPT_HEADER, 0);
  5. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  6.  
  7. $wynik = curl_exec($curl);
  8.  
  9.  
  10.  
  11.  
  12. preg_match('#<a href="http://www.tserwery.pl/" title="Tserwery.pl - hosting gier">(.*)</a> #', $wynik, $podaj);
  13.  
  14. print_r($podaj[1]);
  15.  
  16. curl_close($curl);


Pokazuje to co chce czyli: Tserwery.pl
Lecz gdy próbuję zrobić tak:

  1. $host = "http://stronka/index.php?";
  2.  
  3. $curl = curl_init($host);
  4. curl_setopt($curl, CURLOPT_HEADER, 0);
  5. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  6.  
  7. $wynik = curl_exec($curl);
  8.  
  9.  
  10.  
  11. preg_match("#<input type='hidden' name='kodzidopobrania2' value='(.*)' /> #", $wynik, $podaj);
  12.  
  13. print_r($podaj[1]);
  14.  
  15. curl_close($curl);

To już nie wyświetla nic.
wNogachSpisz
Może tym ?:
http://fr.php.net/manual/en/class.domxpath.php
Mati010
Nikt nie ma innego pomysłu?? Praktycznie to nie wiem czemu mnie wylogowuje z strony dlatego też nie mogę pobrać po przez preg_match.
b4rt3kk
Jeśli nie masz pewności co do poprawności swojego wyrażenia regularnego to wyświetl całą stronę pobraną cURL-em i zobacz czy jest to rzeczywiście to czego oczekujesz.

Jeśli treść jest dostępna dopiero po zalogowaniu to pierwszy krok wykonujesz dobrze, kolejnym powinno być przejście do podstrony z treścią, którą chcesz pobrać, przy użyciu ciasteczka wygenerowanego przy logowaniu (przechowuje dane sesji). Inaczej nie ma to sensu, nawet gdy się zalogujesz, to przy nawiązaniu kolejnego połączenia cURL-em znów jesteś wylogowany.

Także odpowiedź jest prosta i krótka, nic Cię nie wylogowuje, a Ty sam zaczynasz nowe połączenie (z nowymi zmiennymi sesyjnymi i id).
Mati010
Dobra dałem radę dzięki za pomoc.
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.