V jednom příspěvku tady ve fóru jsem si přečetl, že doba platnosti session se nastavuje pomocí session_cache_expire() a session_set_cookie_params(), ale v manuálu se píše toto:
The cache expire is reset to the default value of 180 stored in session.cache_limiter at request startup time. Thus, you need to call session_cache_expire() for every request (and before session_start() is called).
Set cookie parameters defined in the php.ini file. The effect of this function only lasts for the duration of the script. Thus, you need to call session_set_cookie_params() for every request and before session_start() is called.
Já teda moc anglicky neumím, ale jestli jsem to pochopil správně, tak efekt téhle funkce platí pouze pro aktuální skript.
Je to tak? A jestli jo, tak k čemu to vlastně je?
Potřeboval bych nastavit platnost session na 2 hodiny například, ale aby se taky nesmazala po uzavření okna prohlížeče. Jak to mám udělat?
Díky
Fórum › PHP
Nastavení platnosti session
To MareX: Jestli chceš, aby ti to fungovalo všude, tak to musí být pořád namlácený v kódu. Prostě si to dej třeba tam, co pokaždé includuješ.
Tohle mi funguje korektně:
<?php
$zivotnost_v_sekundach = 30;
session_set_cookie_params($zivotnost_v_sekundach);
session_cache_expire(ceil($zivotnost_v_sekundach/60));
session_start();
if(isset($_SESSION['sezeni'])) {
echo 'Porad jeste sedime.';
}
else {
$_SESSION['sezeni'] = TRUE;
echo 'Startujeme nove sezeni.';
}
?>
Možná, že jsou někde s tím potíže, ale já jsem se s nimi nesetkal. Jestli ti to nepojede, prostě si napiš vlastní session handler nebo to odněkud okoukej, na netu je toho spousta a několik CMS má vlastní(např.: Drupal, XOOPS, Xaraya).
Takže stačí, když to dám do každé stránky a zůstane to v platnosti i po uzavření a znovu otevření okna prohlížeče?
Tak mi to nefunguje :( Zkoušel jsem to na 30 dní a v Opeře jsem zkontroloval ve správci cookie, že její platnost je opravdu na 30 dní, ale po reloadu stránky po 30-ti minutách jsem byl stejně odhlášen.
Takhle to mám:
<?php
$session_cas_sekundy = (60*60*24*30);
session_set_cookie_params($session_cas_sekundy);
session_cache_expire(ceil($session_cas_sekundy / 60));
session_start();
?>
MareX píše:#
# Tak mi to nefunguje :( Zkoušel jsem to na 30 dní a v Opeře jsem zkontroloval ve správci cookie, že její platnost je opravdu na 30 dní, ale po reloadu stránky po 30-ti minutách jsem byl stejně odhlášen.#
##
#Takhle to mám:#
#<?php#
#$session_cas_sekundy = (60*60*24*30);#
#session_set_cookie_params($session_cas_sekundy);#
#session_cache_expire(ceil($session_cas_sekundy / 60));#
#session_start();#
#?>
A tuhle poučku z manuálu znáš?
Note: Setting new_cache_expire is of value only, if session.cache_limiter is set to a value different from nocache.
phpinfo();
//nebo
var_dump(ini_get('session.cache_limiter'));
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Vypršení platnosti session a AJAX — založil Figa
[C#] Nastaveni platnosti cookies — založil JannyM
Upraveni oboru platnosti — založil .
Ukončení platnosti licence - poraďte! :) — založil Jarda
Hlídání platnosti dle datumu — založil ondrej.havlas
Moderátoři diskuze