Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Powrót do sesji po zamknieciu przegladarki
Forum PHP.pl > Forum > PHP
telepawel
Witam,

Wiadomo, ze komenda session_start() wygeneruje nowa sesje...ok dzialamy na niej...pozniej zamykamy przehladarke...wchodzimy jeszcze raz na strone...i mamy ponownie nowa sesje..

Moje pytanie czy jest jakas mozliwosc aby ponownie otworzyc wczesniejsza sesje poprzez zmienna w linku ?

$link = $_REQUEST['sesja_z_linku'];
np. session_start($link);

Pozdrawiam
Paewl
crash
Chyba wlasnie niezbyt bezpieczne byloby gdyby sesja nie wygasala po zamknieciu przegladarki. Za bardzo nie widze mozliwosci jak wskrzesic sesje... W tym linku to co bys niby podal? Link do katalogu gdzie przechowywane sa pliki sesyjne na serwerze? snitch.gif Mozesz zbudowac mechanizm sesji na bazie danych i uzaleznic wygasanie sesji od czasu nieaktywnosci, a nie zamkniecia przegladarki, ale nie polecam takiego rozwiazania.
DavidPL
Sprawa jest dość banalna.
Pierwsze co musisz zrobić to ustawić czas trwania sesji w ten sposób żeby leżały w systemie odpowiednio długo (np: ini_set('session.gc_maxlifetime', 7*24*60*60) sprawi że sesja będzie leżała na maszynie tydzień ).
Następnie funkcją session_id() pobierasz identyfikator sesji i tworzysz sobie odpowiedni link, np:
  1. <?php
  2.  
  3. echo 'skrypt.php?PHPSESSID='.$identyfikator_sesji;
  4.  
  5. ?>


Po zamknięciu przeglądarki, ponownym uruchomieniu i wklejeniu takiego linku dostaniesz stronę z już otworzoną sesją (o ile nie została usunięta z serwera).

Sprawa jest jeszcze prostsza jeśli przeglądarka akceptuje ciastka.
Wystarczy wtedy przy użyciu session_set_cookie_params() ustawić odpowiedno długi czas przechowywania ciastka sesyjnego i sprawa załatwiona.

Mam nadzieje że pomogłem.
hawk
A z drugiej strony należy pamiętać, że dobrze napisany serwis, gdzie bezpieczeństwo jest ważne, powinien specjalnie upewniać się że taka funkcjonalność nie ma miejsca. Po prostu jest to dziura w bezpieczeństwie. Patrz atak typu session fixation.
DavidPL
Zgadza się w 100%.
Nigdzie nie napisałem że jest to zalecane, bezpieczne itp itd, a jedynie wskazałem rozwiązanie.
morrison
ja mam wiec pytanie odnosnie sesji i bezpieczenstwa. Mam system logowania userow, wykorzystuje sesje. Gdy uzytkownik sie wyloguje, sesja jest niszczona, ale: gdy da strone wstecz raz czy dwa, odswiez i wowczas znow jest ten sam uzytkownik zalogowany!! Co powinienem jeszcze dodac do systemu aby nie bylo takiej mozliwosci powrotu??
crash
Dasz wstecz to wroci i niby jest znow zalogowany, ale sprobuj cos zrobic - jesli sesja zostala zniszczona to powinno usera wywalic do logowania.
morrison
Niestety tak nie jest. Po kilku kliknieciach wstecz oraz odswierz wraca do systemu i mozna zrobic wszystko nawet zmienic haslo!! Moze nieprawidlowo zamykam sesje potem to sprawdze. Ale druga kwestia: sa systemy logowania, ktore nie pozwalaja na powrot do systemu, tam sie nie da kliknac wstecz lub odswiez i zobaczyc tego co bylo ogladane - i tak powinno byc. Jak to zrobic?

ps: jak najlepiej zniszczyc dane sesji, tak:
  1. <?php
  2.  
  3. // Usuń wszystkie zmienne sesyjne
  4. // Na koniec, zniszcz sesję
  5.  
  6. ?>

czy tak:
  1. <?php
  2.  
  3. // Usuń wszystkie zmienne sesyjne
  4. $_SESSION = array();
  5. // Na koniec zniszcz sesję
  6. ?>


questionmark.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.