| 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: 17 let
|
|||
0