Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Przenoszenie sesji między serwisami, Ta sama sesja na rożnych serwerach
wojto
post
Post #1





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 29.06.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Witam,
Tworze serwis, ktory ma sie skladac z kilku podserwisow, np. profil.xxx.pl (glowna strona serwisu), gry.xxx.pl, mp3.xxx.pl itp. Kazdy z tych podserwisow bedzie umieszczony na innym serwerze, ale maja miec wspolna baze danych z profilami uzytkownikow.
Korzystanie ze wspolnej bazy danych z profilami mam juz zrobione, ale problem jest podczas logowania, bo podczas przechodzenia pomiedzy serwisami na kazdym z nich tworzona jest nowa sesja, a ja chce, aby ciagle byla ta sama sesja.

Narazie rozwiazalem to w ten sposob, ze identyfikator sesji przekazuje w linku, czyli np. bedac w serwisie gry.xxx.pl klikajac w link profil.xxx.pl/sesja=34rh43uirh34ruih34rui43rhr34r wchodze na serwis profilu i tam sobie skryptem pobieram i tworze sesje o identyfikatorze z tego linka.
Problem pojawia sie, gdy np. zaloguje sie w profil.xxx.pl i nie przejde do podstrony po linku gry.xxx.pl?sesja=3urhi34uhr3i4urh3i4rhu tylko wpisze bezposrednio gry.xxx.pl, wtedy tworzy losowa sesje.

Probowalem korzystac z session.cookie_domain, ale ono moze korzystac z jednoelementowych adresow z .com, np. xxx.com, musialo by byc cos.xxx.com.

Czy jest jakis inny sposob, aby logujac sie na jednym serwisie byc jednoczesnie zalogowanym na innym? Oba serwisy oczywiscie na innych serwerach :/

Dzieki za ewentualne odpowiedzi.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
wojto
post
Post #2





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 29.06.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


@normanos: jezeli ta funkcja, ktora podal dr_bonzo nie zadziala, to znaczy, ze nie mozesz pewnie zmieniac ustawien domeny ciastek.

Ja wczesniej wpadlem na jeszcze inny sposob:
Z baza danych laczysz sie bezproblemowo z obu serwisow. W takim razie wchodzac na subdomena.domena.pl zapisujesz do bazy nowa sesje i dodatkowo hash informacji o tobie (ip, przegladarka itp.), np.
  1. <?php
  2. $_SERVER['REMOTE_ADDR'].sha1(gethostbyaddr($_SERVER['REMOTE_ADDR']).
  3. (isset($_SERVER['HTTP_X_FORWARDED_FOR'])?$_SERVER['HTTP_X_FORWARDED_FOR']:'').
  4. $_SERVER['HTTP_USER_AGENT'])
  5. ?>

nastepnie wchodzac na domena.pl za pierwszym razem zapewne sprawdzasz, czy sesja istnieje, jesli nie, to tworzysz losowy identyfikator, tutaj wystarczy dac kolejnego if'a jesli sesja nie istnieje, to sprawdzasz w bazie, czy istnieje sesja i takim hashu jak teraz masz, jesli tak, to pobierasz jej identyfikator i tworzysz nowa sesje o pobranym ID.

U mnie by to dzialalo, tylko problem byl z tym, ze czasami pozostawaly jakies smiecie z poprzednich logowan tego usera, wsrod tych smieci byly tez stare sesje tego uzytkownika (ktore by zapewne zostaly usuniete po wykonaniu gc()). Wiec problem byl z wylogowaniem, bo znajdowal stara sesje.

Ten post edytował wojto 13.11.2005, 13:50:12
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 23:15