Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z logowaniem na subdomenach
Forum PHP.pl > Forum > PHP
EpureLight
Witam wszystkich.

Do serwisu, który tworze napisałem system logowania i rejetrowania w php. Zmienne pobierane z bazy danych są przechowywane w zmiennych sesji. O bezpieczeństwo zadbałem, więc o to się nie martwię. Problem polega na tym, że serwis będzie wyposażony w blog i forum, które będą na adresach blog.domena.pl i forum.donema.pl. System logowania znajduje się w katalogu głownym domeny. Po zalogowaniu użytkownik może bez problemu poruszać się po stronie lecz gdy wchodzi na stronę bloga to zostaje wylogowany, lub lepiej mówiąc, nie jest zalogowany, gdyż po porocie na stronę domena.l jest zalegowany. Chciałbym temu problemowi zaradzić jednak nie mam pojęcia jak to zrobić. Słyszałem, że te domeny są traktowane jako różne, jednak nic mi to nie mówi. Nie chce do tego użyć pików coockie jeżeli to nie jest konieczne.

Proszę was o pomoc i z góry dziękuję wink.gif
cycofiasz
Sesje bazują na cookies. Użyj funkcji http://www.php.net/manual/en/function.sess...okie-params.php przed session_start.

Przykład:
  1. session_set_cookie_params(0, '/', '.twojadomena.pl');
askone
System logowania jako osobna aplikacja umieszczona w osobnej subdomenie z osobną baząquestionmark.gif
EpureLight
@cycofiasz

Nie wiem dokładnie w jaki sposób miałoby to działać, jeżeli możesz to opisz proszę go dokładniej, dla początkującego wink.gif

@askone

Dobry pomysł. Jeżeli dobrze rozumiem to chodzi o coś takiego, że przerzucam system logowania na np. domene login.domena.pl, gdzie użytkownik się loguje i jeżeli logowanie jest poprawne to przekierowanie na stronę główną, gdzie skrypt zbiera dane POST z formularza logowania do zmiennych sesji ?
cycofiasz
Poczytaj o działaniu ciastek: http://pl.wikipedia.org/wiki/Ciasteczka , Ciebie powinno zainteresować to co pod domain=domena
askone
Cytat
Dobry pomysł. Jeżeli dobrze rozumiem to chodzi o coś takiego, że przerzucam system logowania na np. domene login.domena.pl, gdzie użytkownik się loguje i jeżeli logowanie jest poprawne to przekierowanie na stronę główną, gdzie skrypt zbiera dane POST z formularza logowania do zmiennych sesji ?


Coś w tym stylu. Faktem jest iż nie wdrażałem tego rozwiązania jeszcze nigdzie u siebie, ale wydaje się dość prostym do wdrożenia.
zbig
Witam !

Musisz w tym przypadku uzyc globalnego mechanizmu przechowywania danych sesyjnych . Albo DB albo memcahed.

[edit]
session_set_save_handler

Pozdrawiam
EpureLight
Cytat(askone @ 3.06.2011, 15:15:27 ) *
Coś w tym stylu. Faktem jest iż nie wdrażałem tego rozwiązania jeszcze nigdzie u siebie, ale wydaje się dość prostym do wdrożenia.


Jednak po głębszym przemyśleniu może to nie działać. Bo użytkownik wtedy będzie zalogowany na domenie, na której będzie skierowany po zalogowaniu, zas po przejsciu na forum lub blog nastąpi ten sam problem.


Cytat(zbig @ 3.06.2011, 17:06:40 ) *
Witam !

Musisz w tym przypadku uzyc globalnego mechanizmu przechowywania danych sesyjnych . Albo DB albo memcahed.

[edit]
session_set_save_handler

Pozdrawiam



Nie do końca rozumiem jak ta funkcja działa. Tzn jakie dane gdzie mają trafiać i co ta funkcja ma z nimi zrobić. Dodatkowo nie mam pojęcia w którym miejscu kodu to wdrożyć. Programuję w php jednak pierwszy raz spotykam się z takim problemem i nie mam pojęcia jak mu zaradzić.
cycofiasz
A próbowałeś chociaż mojej porady? Raczej nie - a szkoda.
EpureLight
Cytat(cycofiasz @ 3.06.2011, 20:18:59 ) *
A próbowałeś chociaż mojej porady? Raczej nie - a szkoda.


Próbowałem, razem z użyciem parametru session.cookie_domain", ".domena.pl", lecz coś mi w tym wszystkim nie działa. Użytkownik nadal jest niezalodowany przy zmianie subdomeny.
Zyx
zbig -> co ma miejsce składowania danych sesji na serwerze do widoczności ciastek w subdomenach przez przeglądarkę? Nie rób mętlika w głowie koledze. Poprawne rozwiązanie zaproponował cycofiasz - chodzi po prostu o to, by powiedzieć przeglądarce, że te wszystkie subdomeny stanowią część jednego serwisu i tyle. Nie ma w tym żadnej filozofii.
EpureLight
Cytat(Zyx @ 3.06.2011, 20:23:41 ) *
zbig -> co ma miejsce składowania danych sesji na serwerze do widoczności ciastek w subdomenach przez przeglądarkę? Nie rób mętlika w głowie koledze. Poprawne rozwiązanie zaproponował cycofiasz - chodzi po prostu o to, by powiedzieć przeglądarce, że te wszystkie subdomeny stanowią część jednego serwisu i tyle. Nie ma w tym żadnej filozofii.


Widzisz, głupio się przyznać lecz dla mnie jest w tym filozofia, bo naprawde nie mam pojęcia jak to zaimplementować. Wystarczy tę linijkę wstawić, i jeżeli tak to przed czy po starcie sesji ?
cycofiasz
Jeśli Ci nie działa to usuń w przeglądarce wszystkie cookies powiązane z twoją domeną i subdomeną a następnie spróbuj jeszcze raz. Czyli ma być wszędzie:

  1. session_set_cookie_params(0, '/', '.twojadomena.pl');
EpureLight
Cytat(cycofiasz @ 3.06.2011, 20:29:23 ) *
Jeśli Ci nie działa to usuń w przeglądarce wszystkie cookies powiązane z twoją domeną i subdomeną a następnie spróbuj jeszcze raz. Czyli ma być wszędzie:

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



Zaczęło działać! Faktycznie, po uruchomieniu na innej przeglądarce ładnie działa. Dziękuję za pomoc.

@cycofiasz

Wybacz, że nie napisałem, że nic mi z tym nie wyszło lecz naprawdę próbowałem tego użyć. Mam nadzieję, że posłuży to innym. Jeszcze raz dziękuję wink.gif
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.