Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Sesja po zamknięciu przegladarki?
Forum PHP.pl > Forum > PHP
kukix
Witam.
Mam pewien problem. Potrzebuje przerobić pewien skrypt tak, żeby po zrestartowaniu przeglądarki cąła sesja zostawała przywrócona spowrotem.

Czy jest na to jakiś sposób, czy trzeba zrezygnowac całkowicie z sesji na rzecz cookies?

Pozdr.
Sephirus
Nie rezygnuj z żadnej sesji smile.gif

Zapoznaj się z tym i tym

Jak sie już zapoznasz to ustaw odpowiednio długi czas życia ciasteczka za pomocą pierwszej funkcji i ustaw taki sam czas dla zmiennej konf. session.gc_maxlifetime.

W sumie możesz też ustawić czas życia ciasteczka też poprzez konfiga session.cookie_lifetime (0 - oznacza właśnie kasuj po zamknięciu przeglądarki).

i to Ci w sumie powinno wystarczyć - masz źródła - działaj wink.gif
Wasper
nie rezygnuj z sesji
cookiesy moze Ci pozmianiac nawet pani Gienia z piekarni u Lucjana, no chyba, ze beda dobrze zaszyfrowane tongue.gif
Ale sesja to dobra rzecz, kolega wyzej dobrze prawi smile.gif
kukix
Cytat(Sephirus @ 7.02.2013, 13:33:36 ) *
Nie rezygnuj z żadnej sesji smile.gif

Zapoznaj się z tym i tym

Jak sie już zapoznasz to ustaw odpowiednio długi czas życia ciasteczka za pomocą pierwszej funkcji i ustaw taki sam czas dla zmiennej konf. session.gc_maxlifetime.


Zapoznałem się z mechanizmem "session_set_cookie_params", jednak nie wszystko jest jasne.
Znalazłem ciekawy przykład:

  1. <?php
  2.  
  3. $Lifetime = 3600*24*30;//miesiac
  4. $Seperator = (strstr(strtoupper(substr(PHP_OS, 0, 3)), "WIN")) ? "\\" : "/";
  5. $DirectoryPath = dirname(__FILE__) . "{$Seperator}SessionData";
  6. is_dir($DirectoryPath) or mkdir($DirectoryPath, 0777);
  7.  
  8. if (ini_get("session.use_trans_sid") == true) {
  9. ini_set("url_rewriter.tags", "");
  10. ini_set("session.use_trans_sid", false);
  11.  
  12. }
  13.  
  14. ini_set("session.gc_maxlifetime", $Lifetime);
  15. ini_set("session.gc_divisor", "1");
  16. ini_set("session.gc_probability", "1");
  17. ini_set("session.cookie_lifetime", "0");
  18. ini_set("session.save_path", $DirectoryPath);
  19.  
  20. ?>



Niebardzo rozumie do czego jest potrzebna ta ścieżka? Czy tam zapisywana jest cała sesja a w cookies tylko odnosnik do tej sesji?
Sephirus
Tobie wystarczy tyle:

  1. $Lifetime = 3600; // w sekundach - czyli godzina (przykładowo)
  2.  
  3. ini_set("session.gc_maxlifetime", $Lifetime); // dajesz ten czas do GC aby Ci nie usunął sesji wcześniej po stronie PHP
  4. ini_set("session.cookie_lifetime", $Lifetime); // i dajesz go też jako czas życia ciastka
  5. session_start(); // startujesz sesję


Tyle wink.gif

Tamten przykład jest bardziej pogmatwany i tam też jest zapis sesji w innym miejscu niż domyślne w PHP - to Ci na nic nie potrzebne.
kukix
Cytat(Sephirus @ 11.02.2013, 13:04:17 ) *
Tobie wystarczy tyle:


dodałem taki kod przed session_start() jednak po zamknięciu przegladarki sesja dalej nie jest pamiętana. Otwieram od nowa przegladarke i nie ma sesji sad.gif

Czy robię coś źle? O czymś powininenem jeszcze pamiętac?
Sephirus
Sęk w tym że to starcza normalnie - sprawdziłem u siebie bo już sam myślałem że o czymś zapomniałem... FF, Chrome, Opera - śmiga. Sprawdź dokładnie jeszcze u siebie...
kukix
Cytat(Sephirus @ 11.02.2013, 14:05:11 ) *
Sęk w tym że to starcza normalnie - sprawdziłem u siebie bo już sam myślałem że o czymś zapomniałem... FF, Chrome, Opera - śmiga. Sprawdź dokładnie jeszcze u siebie...




Wyczyściłem kod z kilku smieci i dziąła wyśmienicie.. Jestem Ci bardzo wdizeczny za pomoc..

Czy jest sznasa, żeby różne mianne miały różną długość życia? Np, żeby można było sobie przy lgoowaniu zaznaczyć "Autologowanie".. jednak gdy jest odznaczone, żeby sesja pamiętała wszystkie zxmienne oprócz loginu i hasła?
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.