Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Konflikty, nadpisywanie i bezpieczenstwo Sesji, Problemy wynikajace z wywolywania sesji wielokrotnie
iwosz
post
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:

  1. <?php
  2. $_SESSION = array();
  3. unset($_SESSION);
  4. ?>


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:
  1. <?php
  2. session_cache_limiter ('must-revalidate');
  3. header("must-revalidate");
  4. header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
  5. ?>




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
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: 21.12.2025 - 14:06