Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] automatyczne wylogowanie po braku aktywności
Forum PHP.pl > Forum > Przedszkole
rybosom
mam prośbę o sprawdzenie mojego kodu, wszystko jest ok po za tym że jeśli nic nie robię przez ok 20 min to wylogowuje mnie i muszę się ponownie logować:
  1. <?php
  2. ob_start ("ob_gzhandler");
  3. $czassesji = (60*60*9);
  4. //error_reporting(0);
  5.  
  6. include './db_connect.php';
  7.  
  8. function logowanie() {
  9. if($_SESSION['logowanie'] == 'poprawne') {
  10.    $string  = '<br /><form action="' . getenv(REQUEST_URI) . '" method="post">';
  11.    $string .= '<input type="submit" class="button" name="wylogowanie" value="Wyloguj" />';
  12.    $string .= '</form>';
  13. } else {
  14.    $string = '<form action="' . getenv(REQUEST_URI) . '" method="post">';
  15.    if(isset($_SESSION['logowanie']))
  16.        $string .= $_SESSION['logowanie'];
  17.        $string .= '<table border="0">';
  18.        $string .= '<tr>';
  19.        $string .= '<td>Login:</td>';
  20.        $string .= '<td><input type="text" size="15" class="pole" name="login" /></td>';
  21.        $string .= '</tr>';
  22.        $string .= '<tr>';
  23.        $string .= '<td>Hasło:</td>';
  24.        $string .= '<td><input type="password" size="15" class="pole" name="haslo" /></td>';
  25.        $string .= '</tr>';
  26.        $string .= '<tr>';
  27.        $string .= '<td class="footer-login"> </td>';
  28.        $string .= '<td align="right"><input type="submit" name="logowanie" class="button" value="ok" /></td>';
  29.        $string .= '</tr>';
  30.        $string .= '</table>';
  31.        $string .= '</form>';
  32. }
  33.    return $string;
  34. }
  35.  
  36. // logowanie
  37.  
  38. if(isset($_POST['logowanie'])) {
  39.    $dane = @mysql_query('SELECT login, pass FROM usr WHERE login ="' . $_POST['login'] . '" AND pass = "' . $_POST['haslo'] . '"');
  40.  
  41.    if(mysql_num_rows($dane) == '1') {
  42.        $_SESSION['logowanie'] = 'poprawne';
  43.    } else {
  44.        $_SESSION['logowanie'] = '<h2>Błędny login lub hasło!</h2>';
  45.    }
  46.    //unset($_POST['logowanie']);
  47. }
  48.  
  49. // wylogowanie
  50.  
  51. if(isset($_POST['wylogowanie'])) {
  52.    setcookie('hash', '0',  time()-60*60*9);
  53.    unset($_SESSION['logowanie']);
  54. }
  55.  
  56.  
  57. if($_SESSION['logowanie'] == 'poprawne') {
  58. // jeśli zalogowany
  59.        if (!isset($_COOKIE[hash])) {
  60.  
  61.        $query = 'SELECT id, login, realname, email FROM usr WHERE login = "' . $_POST['login'] . '"';
  62.        $result = mysql_query($query);
  63.        $info = mysql_fetch_array($result);
  64.            $user_id = $info[0];
  65.            $login = $info[1];
  66.            $realname = $info[2];
  67.            $email = $info[3];
  68.        
  69.        $cookie = urlencode(serialize(array($user_id, $login, $realname, $email)));
  70.        setcookie("hash", base64_encode($cookie), time()+60*60*9);
  71.        }
  72.  
  73. switch ($_GET['str']) {
  74.    ...
  75.    ...
  76.    ...
  77. break;
  78. }
  79.  
  80. } else {
  81. // jeśli niezalogowany
  82.    echo '';
  83. }
  84.  
  85. echo logowanie();
  86.  
  87.  
  88. ?>
erix
Zerknij do narzędzia zarządzania ciasteczkami w przeglądarce i sprawdź, jaką faktycznie mają ustawioną ważność.
rybosom
problem chyba od tego nie zalezy bo sytuacja ma miejsce dla wielu osob na roznych komputerach...
ayeo
Witam!

Pewnie Garbage Collector usuwa te sesje. Poczytaj o:

session.gc_probability, session.gc_divisor
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.