Session a trvalé přihlášení checkboxem
- Draffix
- Člen | 146
Zdravím, narazil jsem na problém, se kterým neumím hnout, nebo spíše
tomu asi dostatečně nerozumím.
Chtěl bych jednoduše zprovoznit trvalé přihlášení, ale až poté, co
uživatel zaškrtne checkbox:
if ($values->permanentLogin) {
$user->setExpiration('+14 days', FALSE);
}
Jenže abych to mohl použít, tak musím mít v configu toto:
session:
autoStart: smart
expiration: +14 days
Jinak mi to vyhazuje notice u toho checkboxu:
The expiration time is greater than the session expiration 10800 seconds
Když to tedy mám v configu, tak když se zkusím přihlásit ale bez trvalého přihlášení, vypnu prohlížeč a zkusím to znovu, tak jsem stále přihlášen, to i přesto, že jsem nedal to trvalé přihlášení. Jak tedy nastavit, aby byl uživatel trvale přihlášen jen tehdy, když to zaškrtne a ne pořád, resp. po dobu expirace?
- hAssassin
- Člen | 293
ano, v configu musi byt nastavena dostatecne velka expirace session oproti aplikaci, cili v aplikaci nesmi byt vetsi expirace nez je v configu. A proc ti to nefunguje? Jaky je else ty podminky? predpokladam ze nejaky takovy:
if ($values->permanentLogin) {
...
} else {
$user->setExpiration('+1 hour', FALSE);
}
Nastav druhy parameter na TRUE a treti idealne taky, coz zaruci ze se session zrusi po zavreni prohlizece. Pokud tam else nemas, tak ho tam potrebujes ;)
- Draffix
- Člen | 146
No neměl jsem ho tam, předpokládal jsem, že to tak funguje automaticky (jako většina věcí u nette :)). Nicméně teď mám toto:
if ($values->permanentLogin) {
$user->setExpiration('+14 days', FALSE);
} else {
$user->setExpiration('+1 hour', TRUE, TRUE);
}
Po zavření již není uživatel přihlášen, což je správně a co jsem
chtěl, ale stále jsou aktivní session, přesněji
$_SESSION["cart"]
. Jak zajistit, aby se po zavření prohlížeče
smazaly i tyto? Nebo rovnou nějak globálně je smazat.
- hAssassin
- Člen | 293
no ale ty tim nastavis pouze expiraci sessny pro prihlaseni uzivatele. o ostatni veci se uz musis postarat sam. Bud je mazat v logout() metode nebo jim pri vytvoreni dany sekce nastavit expiraci na stejnou jako pri loginu, nebo ji nastavit na NULL, viz api, pak by se sekce mela zrusit pri zavreni prohlizece. Resit nakupni kosik pro prihlasenyho uzivatele pres session mi ale neprijde uplne ok.
- Draffix
- Člen | 146
Já vím, že to není ideální, ale mám to jak v databázi (aby věci
v košíku zůstaly), tak po přihlášení se mi to „překopíruje“ do
session, aby se mi pak lépe pracovalo dále v šablonách a nemusel tak celý
proces objednávky dělit na tu jednu část, která není přihlášena a je to
řešeno pomocí sessions a tu druhou přihlášenou část, řešenou přes
databázi. A chci se tedy zeptat, jak udělat, aby ten session
$_SESSION["cart"]
spadal pod určitou sekci (někde při při
vytváření hádám)? Dokumentaci sem si četl, ale všude byly jen proměnné,
ne globální session.