[PHP, Cookies] Jak zarejestrować sesję na wiele domen

0

Mam serwis z podserwisami (serwis.pl, podserwis1.serwis.pl, podserwis2.serwis.pl), baza uzytkownikow jest wspolna. Aby się zalogować należy wypełnić formularz logowania na każdej z domen, to samo przy wylogowaniu. dużo prościej byłoby zrobić to jednym kliknięciem - coś jak jest na allegro / moto allegro...

pytanie: jak (najlepiej bez uzycia JS)?

system logowania opiera sie o sesje...

0

Nie da sie :P

Sesja jest na domene, ciacho jest na domene, nie da sie sesji i ciacha dac na inne domeny (czy wiele domen) - byla juz o tym dyskusja

Robisz logowanie, przy logowaniu losujesz liczbe (jakis hash), zapisujesz do bazy czas ostatniej aktywnosci, login, haslo, ip i ta liczbe
Jak przechodzis na inna strone (inna domene) dodajesz do URLa ta liczbe, strona sprawdza poprawnosc liczby, IP, czy od ostatniej aktywnosci nie minelo np wiecej niz 60 min, jesli wszystko ok, to autoryzujesz na nowej stronie wykozystujac zapisane login i haslo

0

jak nie ma pomyslu, to zaraz ze sie nie da :P

jakos na moto allegro to zrobili, bez wykorzystania zadnych dodatkowych parametrow, czy javascriptu... zreszta sam zobacz

0

otóż da sie bo tu przeciez domena jest ta sama tylko subdomeny inne :) - wiec sesja bedzie odczytywana poprawnie i nie trzeba nic kombinowac sam miałem takie przypadki i jakoś nie było problemów

0

ja tez mam wszystko w obrebie jednej domeny, logowanie na tej glownej, jak i subdomenach i kopa :(

prace.wasilczyk.pl, jezeli ktos chce potestowac...

0

wystarczy na domenę ustawić (Allegro właśnie tak robi)

.strona.pl

czyli

session_set_cookie_params(0, '/', '.twojadomena.pl');
session_start();

i sesja będzie odczytywane ze wszystkich *.strona.pl, ew. możesz zrobić:

session_start();
$domains = Array('.strona.pl', '.innastrona.pl');
foreach($domains as $domain){
  setcookie(session_name(), session_id(), 0, '/', $domain);

no chyba że serwer nie da dostępu do danych z tej sesji, wtedy musisz samemu okodzić całą jej obsługę przez session_set_save_handler

zresztą co to za głupie "nie da się", "była już o tym dyskusja" skoro nawet jesteście wszyscy na stronie na której można się zalogować pod 4programmers.net a sesja trwa pod 4programmers.net/Forum :/

tomkiewicz napisał(a)

prace.wasilczyk.pl, jezeli ktos chce potestowac...

nie dokończyłeś zdania, uciąłeś akurat w najważniejszym momencie kiedy jak sądze chciałeś podać dane konta testowego, bo nie każdemu chce się rejestrować żeby sobie potestować ...

0
Adamo napisał(a)

session_set_cookie_params(0, '/', '.twojadomena.pl');

wlasnie o to chodzilo - BIG thx :]

co do konta testowego to sorry - chcialem wpisac, ale jakos zmeczony bylem i kilka rzeczy na raz robilem i wylecialo mi z glowy :-/

btw: wszystko sie da, w zaleznosci od posiadanych checi, czasu i funduszy ;)

0

Troszeczke zmienie temat:
Mam forum phpBB i stronę w php, uzytkownicy strony sa w tabeli uzytkownikow forum. Forum i strona to oddzielne subdomeny. Jak zrobić zeby logując sie na forum uzytkownik automatycznie zalogowal sie na strone i odwrotnie?
Chodzi mi tu bardziej o znajomosc kodu phpBB, zeby ktos mi powiedzial ktory fragment kodu zmodyfikowac i jak?

0

Wątpię, żeby komuś chciało się ślęczeć nad kodem phpBB (który nie dość spory), bo ty masz taką zachciankę ;]

0

mysle, ze moze byc przypadek, ze ktos juz takie cos zastosowal - niemalo jest przeciez CMSow zintegrowanych z baza phpBB, wiec...

nawiasem mowiac sam o czyms takim myslalem i mam zamiar predzej czy pozniej wykonac... raczej pozniej niz predzej :D

0

Szczerze mówiąc robiłem już coś takiego. Sprawa jest bardzo prosta. Do kodu strony dodaje się:

$forumdir='../forum/';

define('IN_PHPBB', true);
$phpbb_root_path = $forumdir;
include_once($phpbb_root_path . 'extension.inc');
include_once($phpbb_root_path . 'common.'.$phpEx);
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);

I wszystkie potrzebne dane są w zmiennej $userdata. Żadnych zmian w kodzie phpBB dokonywać nie trzeba. Oczywiście '../forum/' trzeba zastąpić odpowiednią ścieżką do forum względem aktualnej strony.

1 użytkowników online, w tym zalogowanych: 0, gości: 1