Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 62 Pomógł: 3 Dołączył: 30.07.2009 Ostrzeżenie: (0%)
|
Witam,
na wstepie chcial bym zauwazyc ze piszac nowy temat dreczy mnie mysl ze 'taki temat byl juz 100razy' i zaraz ktos sie do mnie doczepi - to chyba troche chore ze na forum nie mozna sie w spokoju wypowiedziec, z drugiej strony rozumiem moderatorow. W kazdym razie jak pisze to znaczy ze szukalem i nie znalazlem. Problem: Powiedzmy ze mamy 2 aplikacje, odpalamy obie, w kazdej z nich inicjowane sa zmienne sesyjne, niektore o takich samych nazwach (np. $SESSION['user_login'], lub cokolwiek innego), juz w trakcie uzytkowania abu aplikacji w tym samym czasie, zauwazylem ze w obu aplikacjach wyswietlajac zmienne sesyjne mamy dokladnie taka sama tablice, z reguly z danymi aplikacji ktora uruchomilismy jako ostatnia, czyli mowiac potocznie wyglada to tak jakby sesja zainicjowana w aplikacji 2 nadpisala sesji w aplikacji 1. Czy to jest mozliwe? W manualu PHP, czesc dot. sesji nie ma takich informacji, lub sa niewystarczajace. Czy jest to zwiazane z ustawieniami w php.ini (plik z danymi sesji) ? Co ciekawe pomimo wyswietlania w aplikacji 1 zmiennych z aplikacji 2, aplikacja 1 dziala poprawnie (musi korzystac z wlasnych zmiennych). Jesli jest to tylko kwestia wyswietlania ostatnio zarejestrowanych zmiennych, to luz (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Glowny problem: W wyniku powyzszego problemu, w momencie wylogowania sie z aplikacji 2, rowniez uzytkownik zostaje wylogowany z aplikacji 1... a dokladnie zmienne przechowujace info o logowaniu danego uzytkownika musza byc niszczone. Ciezko mi dokladnie zdiagnozowac problem, wylogowanie polega na zniszczeniu sesji:
Ustawienia php.ini: session.cookie_httponly: Onsession.cookie_lifetime: 0session.cookie_path: /session.name: PHPSESSIDsession.use_cookies: Onsession.use_only_cookies: Off" title="Zobacz w manualu PHP" target="_manual w aplikacji (z koniecznosci) ustawiam naglowki:
Tak to wyglada, testuje na localhoscie, PHP 5.2.9-2, Apache 2.2 pod Windows XP sp3 Pierwszym i najprostrzym chyab rozwiazaniem bylo by w jednej z aplikacji dodanie przedrostka do wszystkich zmiennych sesji w danej aplikacji (np 'ap1-nazwa_zmiennej'). Wtedy nawet jesli obie sesje sie nakladaja, to itak zmienne sie nie nadpisza, pozostaje jednak problem niszczenia sesji... nalezalo by przejrzec sesje i usunac wszystkie zmienne z danym przedrostkiem. Wydaje sie to dosc malo optymalnym rozwiazaniem... Problem moze sie tez wiazac z blednie wygenerowanym ID sesji (jest on generowany domyslnie, nic nie bylo zmieniane). W momencie wyswietlania nazwy sesji funkcja session_name() w obu aplikacjach wyswietlane jest PHPSESSID. Czytalem o session_regenerate_id() itd. ale nie jestem pewien czy to dobra droga... Caly czas badam ten problem, wykluczam niektore opcje, podejrzewam jednak ze nie mam wystarczajacej wiedzy na temat Sesji w PHP... dlatego zwracam sie z prosba o zidentyfikowanie problemu, sam caly czas czytam o sesjach i szukam rozwiazania. Jesli ten problem byl juz jednak omawiany wystarczy link do tematu :] Z gory dziekuje za wszelka pomoc Pozdrawiam Ten post edytował iwosz 30.07.2009, 12:11:47 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 96 Pomógł: 0 Dołączył: 11.09.2006 Skąd: Wrocław Ostrzeżenie: (0%)
|
A ja bym zaproponował w każdej aplikacji przed wywołaniem sesji,
wstawić taką linijkę kodu: np: W aplikacji 1: W aplikacji 2: W ten sposób ciasteczka i sesje będą trzymane w 2 różnych miejscach, będą posiadać też dwa różne 'sessien_id'. I w momencie usuwania sesji z pierwszej aplikacji wystarczy: nie ruszy to sesji z drugiej aplikacji, i tak samo na odwrót, usunięcie sesji z drugiej aplikacji nie ruszy sesji z pierwszej aplikacji. Pozdrawiam, a tak swoją drogą mam odwrotny problem, mam 2 aplikacje i chcę mieć miedzy nimi tą samą sesje loginy i tak dalej. Niby sesje są zapisywane w jednym miejscu , ale jedna sesja nadpisuje drugą nie czytając jej , tak wiec jak się zaloguje na pierwszej aplikacji i wejdę na druga aplikacje, to nie dość że na tej drugiej cały czas jestem nie zalogowany to na tej pierwszej zostaje wylogowany. (z powodu nadpisania sesji przez tą drugą aplikacje). Ktoś może zna rozwiązanie tego problemu? Co jest nie tak, albo co robię źle? Pozdrawiam., |
|
|
|
iwosz [PHP]Konflikty, nadpisywanie i bezpieczenstwo Sesji 30.07.2009, 11:08:49
wookieb Dziwisz się? Tak działa przecież se... 30.07.2009, 11:13:34
iwosz hmm, no ok rozumiem, ale np jak odpale aplikacje w... 30.07.2009, 11:31:57 
fifi209 Cytat(iwosz @ 30.07.2009, 11:31:57 ) ... 30.07.2009, 11:34:19 
iwosz Cytat(fifi209 @ 30.07.2009, 12:34:19 ... 30.07.2009, 11:38:55 
fifi209 Cytat(iwosz @ 30.07.2009, 11:38:55 ) ... 30.07.2009, 11:42:43
wookieb ID jakim się reprezentujesz jest zapisywane w cias... 30.07.2009, 11:35:08
wookieb Przekazywanie id ciasteczka w adresie URL (niepole... 30.07.2009, 11:42:32 
iwosz Cytat(wookieb @ 30.07.2009, 12:42:32 ... 30.07.2009, 11:49:56
wookieb Tak jak kolega wyzej napisał. Napisz session_handl... 30.07.2009, 11:55:40
iwosz Cytat(Sokrates @ 14.08.2009, 13:22:42... 27.11.2009, 11:06:20 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 11:28 |