Autor | Zpráva | ||
---|---|---|---|
endik Profil * |
#1 · Zasláno: 21. 1. 2009, 16:26:42
Ahoj chtel bych poprosit o radu jak udelat samo odhlaseni ze stranky.
Mam udelany formular pro prihlaseni a naslednou kontrolu na strankach kde je prihlaseni potreba. <?php session_start(); if(!empty($_SESSION['prihlaseny']) && $_SESSION['prihlaseny'] === true) { echo "Jste přihlašený"; } else { echo "Nejste prihlašný<a href='index.php'>Přihlaš</a>"; exit; } ?> <a href="odhlaseni.php"> odhlas</a> No a chtel bych aby se mi to samo treba po peti minutach necinosti odhlasilo. Jak na to? |
||
martindeveloper Profil |
#2 · Zasláno: 21. 1. 2009, 17:40:46
Při přihlašování použij funkci session_cache_expire($doba); hodnotu zadej v minutách.
|
||
charlie22 Profil * |
#3 · Zasláno: 21. 1. 2009, 17:44:05
„Při přihlašování použij funkci session_cache_expire($doba); hodnotu zadej v minutách.“
jak se chová tato funkce, pokud zavřeš prohlížeč? Předpokládám, že session zmizne bez ohledu na nastavenou dobu nebo se pletu? |
||
martindeveloper Profil |
#4 · Zasláno: 21. 1. 2009, 17:48:30
charlie22
No řekl bych že i částečně záleží na nastavení v prohlížeči z hlediska cookies. Pokud má dotyční nastavené mazaní všech cookies po vypnutí prohlížeče tak bude odhlášen nehledě na čas, ale pokud se dotyčnému cookies nemažou tak se počítá s doubou která je nastavena. |
||
endik Profil * |
#5 · Zasláno: 22. 1. 2009, 08:34:46
<?php session_cache_limiter('private'); $cache_limiter = session_cache_limiter(); session_cache_expire(1); $cache_expire = session_cache_expire(); session_start(); ?> Tak jsem to zkusil takto, ale stejne me to neodhlasi ani po peti minutach. Mam tento kod zadani jak u overovani prihlasovani, tak i na kazde strance kde jsem mel session_start(); ale stejne nic. Nevite? |
||
endik Profil * |
#6 · Zasláno: 22. 1. 2009, 17:09:26
Opravdu nikdo nevi?
|
||
srigi Profil |
#7 · Zasláno: 22. 1. 2009, 18:52:04
endik
Pri logine si uloz do session aktualny timestamp (funce time() ). Pri overovani prihlasenosti, po kladnom vysledku kontroluj aktualny timestamp voci ulozenemu. cca takto: session_start(); if(!empty($_SESSION['prihlaseny']) && $_SESSION['prihlaseny'] === true) { $lastact = $_SESSION['lastact']; $logoutInterval = 60*90; $currentTime = time(); // check if user reached logout interval if ($currentTime > ($lastact + $logoutInterval)) { #odhlas usera } $_SESSION['lastact'] = time(); // aktualizuj timer echo "Jste přihlašený"; } else { echo "Nejste prihlašný<a href='index.php'>Přihlaš</a>"; exit; } |
||
endik Profil * |
#8 · Zasláno: 23. 1. 2009, 09:28:23
A do scriptu kde se prihlasuju tu funkci Time priradim nekam k session?
$_SESSION(['prihlaseny'], 'time() + 60*1') = true; Zkusil jsem toto ale to je spatne. |
||
srigi Profil |
#9 · Zasláno: 23. 1. 2009, 09:39:52
endik
Nie nie, tam kde vykonavas prihlasenie vytvoris novu SESSION premenu: $_SESSION['lastact'] = time(); |
||
endik Profil * |
#10 · Zasláno: 23. 1. 2009, 09:54:56
Uz sem se v tom docista ztratil.
Tady mam cely ten scrip na overeni: <?php session_start(); $_SESSION['lastact'] = time(); if(!isset($_SESSION['prihlaseny'])) $_SESSION['prihlaseny'] = false; include ("config.php"); $jmeno = addslashes($_POST["txtjmeno"]); $heslo = addslashes($_POST["txtheslo"]); if (empty($jmeno) || empty($heslo)) { echo("Nezadali jste jmeno nebo heslo"); Header("Location: index.php"); } else { $connect = mysql_connect(SQL_HOST, SQL_USERNAME, SQL_PASSWORD); mysql_select_db(SQL_DBNAME); $zaznam = mysql_query("SELECT admin_jmeno FROM login WHERE admin_jmeno = '" . $jmeno . "' AND admin_heslo = '" . $heslo . "'"); $radku = mysql_num_rows($zaznam); if ($radku == 1) { echo('přihlášení úspěšné'); $_SESSION['prihlaseny'] = true; Header("Location: admin.php"); } else { Header("Location: index.php"); echo("Neplatne prihlasovaci udaje"); } mysql_close($connect); } ?> Ma se tam nekam zadat hodnota Time? A tady pak na strance kde by sem mel byt prihlaseny: <?php session_start(); if(!empty($_SESSION['prihlaseny']) && $_SESSION['prihlaseny'] === true) { $lastact = $_SESSION['lastact']; $logoutInterval = 60*90; $currentTime = time(); // check if user reached logout interval if ($currentTime > ($lastact + $logoutInterval)) { #odhlas usera } $_SESSION['lastact'] = time(); // aktualizuj timer echo "Jste přihlašený"; } else { echo "Nejste prihlašný<a href='index.php'>Přihlaš</a>"; exit; } ?> Je to dobre ci ne? |
||
Časová prodleva: 15 let
|
0