Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Skrypt który się automatycznie loguje
Forum PHP.pl > Forum > Przedszkole
lekosm2
Witajcie, chciałbym pobierać dane z jednej strony przy użyciu PHP Simple HTML DOM Parser. Niestety strona z której chce pobrać dane wymaga zalogowania się. I pytanie do Was, jak zrobić, by się skrypt automatycznie logował przy użyciu wpisanych do niego danych do logowania?

Pozdrawiam.

@edit
Tam gdzie chcę się zalogować, to jest forum IPB 3.x i logowanie jest jako POST
nansss93
cURL
lekosm2
Chciałbym zrobić dokładnie to samo, co kolega w tym temacie Temat: cURL i logowanie na IPB

Niestety on tu nie wstawił całego kodu, więc nie wiem gdzie podać login i hasło..
Przedstawi mi ktoś pełny przykład jak to powinno wyglądać?
Rysh
Użyj sobie klasy np. tej:
https://github.com/php-curl-class/php-curl-class
Na stronie nawet masz przykład jak się logować.
lekosm2
Da się w ogóle tą class'e użyć na zwykłym hostingu www?

Pomoże mi ktoś z tym zwykłym cURL jak się zalogować? :/
viking
Przecież to jest tylko nakładka. Jedyne co wymaga to rozszerzenia curl które i tak musisz mieć.
Pewnie problemem twoim jest to, że nie wiesz jak używać composer.
Rysh
Cytat(viking @ 7.08.2016, 09:17:12 ) *
Przecież to jest tylko nakładka. Jedyne co wymaga to rozszerzenia curl które i tak musisz mieć.
Pewnie problemem twoim jest to, że nie wiesz jak używać composer.

Tak to nakładka, ale wg mnie bardzo dobra której sam używam. Ograniczona chyba do minimum wink.gif
lekosm2
To powiecie mi w jaki sposób to zrobić z tym php-curl-class?
Niby są tam przykłady, ale za cholerę nie umiem ich użyć. closedeyes.gif
Rysh
Cytat(lekosm2 @ 11.08.2016, 09:30:28 ) *
To powiecie mi w jaki sposób to zrobić z tym php-curl-class?
Niby są tam przykłady, ale za cholerę nie umiem ich użyć. closedeyes.gif

Patrzysz jakie dane przeglądarka wysyła do logowania i je wpisujesz analogicznie:
  1. $curl = new Curl();
  2. $curl->post('https://www.example.com/login/', array(
  3. 'username' => 'myusername',
  4. 'password' => 'mypassword',
  5. ));
markuz
1. Wchodzisz na stronę z logowaniem z poziomu przeglądarki
2. Otwierasz zakładkę sieć/network z devtools
3. Wpisujesz dane, logujesz się i szukasz żądania odpowiedzalnego za logowanie (prawdopodobnie POST np. [POST] /login)
4. Kopiujesz żądanie do schowka (kopiuj jako cURL, copy as cURL)
5. Przepisujesz żądanie na cURL w PHP (Google Ci podopowie jak ustawić wszystkie opcje) albo uruchamiasz je np. za pomocą funkcji exec.

Pamiętaj o ustawieniu pliku z cookies w cURL tak aby skrypt zapamiętał Twoją sesje, potem jak chcesz wykonać jakieś akcje na stronie wczytujesz ten plik cookies (tam jest prawdopodobnie ID sesji użytkownika na którego się zalogowałeś).

Pamiętaj też o tym, że taka sesja nie trwa wiecznie i czasami podczas "chodzenia" po stronie zostaniesz wylogowany - wtedy musisz od nowa wykonać skrypt który do pliku z cookies zapisze nowe ID sesji.

lekosm2
  1. $curl = new Curl();
  2. $curl->post('https://www.example.com/login/', array(
  3. 'username' => 'myusername',
  4. 'password' => 'mypassword',
  5. ));


a include jaki załączyć?
Rysh
Jeśli instalowałeś composerem to vendor/autoload.php
lekosm2
Znalazłem to https://github.com/shuber/curl i tego użyłem. Tylko teraz jest problem, jak zrobić, że gdy się zaloguję to skrypt nie będzie ponownie się logował tylko wyświetli zawartość strony.
Czyli zamiast
$response = $curl->post
to
$response = $curl->get

Potrzebuję jakiś warunek, który to sprawdzi, czy sesja w cookie jest ważna.
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.