Autor Zpráva
endik
Profil *
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
Při přihlašování použij funkci session_cache_expire($doba); hodnotu zadej v minutách.
charlie22
Profil *
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
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 *
<?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 *
Opravdu nikdo nevi?
srigi
Profil
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 *
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
endik
Nie nie, tam kde vykonavas prihlasenie vytvoris novu SESSION premenu:
$_SESSION['lastact'] = time();
endik
Profil *
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?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: