Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][curl] automatyczne logowanie i przekierowanie
Forum PHP.pl > Forum > Przedszkole
Foxx
Mam następujące zadanie: użytkownik na mojej stronie klika link, który otwiera mu nowe okno przeglądarki w którym jest zalogowany do zewnetrznego systemu. Zacząłem szukać i udało mi się osiągnąć efekt, w którym za pomocą curl prawidłowo przechodzę przez formularz logowania i w zmiennej $strona otrzymuję zawartość strony po zalogowaniu:

  1. $curl = curl_init('http://strona.pl/logowanie.php');
  2. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
  3. curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  4. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
  5. curl_setopt($curl, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');
  6. curl_setopt($curl, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');
  7. curl_setopt($curl, CURLOPT_POSTFIELDS, 'login=jan&haslo=abc');
  8.  
  9. echo $strona = curl_exec($curl);
  10.  
  11. curl_close($curl);


Problem w tym, że po wykonaniu tego kodu nadal jestem na mojej stronie a nie na http://strona.pl
Parametr FOLLOWLOCATION wydawał się mieć z tym coś wspólnego, ale nie jednak nie zostaję przekierowany. To czego potrzebuję, to dodatkowo właśnie przejść na http://strona.pl a nie wyświetlać jej zawartość na mojej stronie. Nie wiem czy to w ogóle możliwe tą metodą? Będę wdzięczny jeżeli ktoś mi podpowie jak uzyskać taki efekt, pozdrawiam.
nexis
Nie tędy droga. Biblioteka CURL pozwala na wykonywanie większości czynności udających człowieka siedzącego przed komputerem tj. logowanie się do serwisów i pobranie odpowiednich informacji. Nie ma to jednak nic wspólnego z faktycznym użytkownikiem, ponieważ to twój serwer się loguje, a nie klient, który uruchamia skrypt na twojej stronie. Jeśli chodzi o logowanie do zewnętrznego serwisu, to polega ono w 99% na ciasteczku ustawianym w przeglądarce użytkownika. Ty takiego ciasteczka nie możesz ustawić dla nie swojej domeny.
Foxx
To że tego ciasteczka nie ustawię dla nie swojej domeny znaczy że tego się w ogóle nie da zrobić?

To, co chcę osiągnąć to sprawienie, żeby użytkownicy mogli się zalogować tylko raz na mojej stronie i mieli z niej dostęp do kilku systemów już bez konieczności osobnego logowania się do każdego z nich. Nie ma jakiejś innej metody osiągnięcia takiego efektu?

erix
Cytat
To, co chcę osiągnąć to sprawienie, żeby użytkownicy mogli się zalogować tylko raz na mojej stronie i mieli z niej dostęp do kilku systemów już bez konieczności osobnego logowania się do każdego z nich. Nie ma jakiejś innej metody osiągnięcia takiego efektu?

Przekazać SID przez URL. Skrypty na innych domenach sprawdzają, czy jest podany - jeśli tak, to ustawiają odpowiednie ciastko.

PHP nie rozróżnia domen dla identyfikatorów sesji, więc jeśli podasz SID + ustawisz odpowiednie ciastko - dane będą współdzielone.
Foxx
Dzięki chłopaki, bardzo mi pomogliście i udało się w końcu smile.gif
-twardes-
Chciałbym odświeżyć temat

czy możecie pokazać jakiś przykład automatycznego przekazania danych do wyszukiwarki i przejście na stronę wyszukiwania.
(chcę kierować użytkownika na https://homebroker.pl/wyniki_wyszukiwania)

z góry dzięki za podpowiedź
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.