Как выйти из системы через 30 минут в php, когда нет активности? - PullRequest
0 голосов
/ 05 марта 2019

Я работаю над сайтом, на котором я хочу выйти из системы через 30 минут, когда нет активности пользователя.

Код php-кода, который я использовал для запуска сеанса:

<?PHP
   session_start();

 /* Code Added (START)  */ 

   if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) {
      // last request was more than 30 minutes ago
      session_unset();     // unset $_SESSION variable for the run-time
      session_destroy();   // destroy session data in storage
   }
   $_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp

  /* Code Added (END)  */    


      // Logout
      if(isset($_GET['user_logout'])){
          unset($_SESSION['pageadmin']);
          header('location: /emailers/landing_admin.php');
          exit();
      }


      if (!empty($_POST) && isset($_POST['user_login']) && $_POST['user_login']==1 && !isset($_SESSION['pageadmin'])){
          $user_arr = array(
              'page'=>'hello',
          );
          if(array_key_exists($_POST['user_name'], $user_arr) && $user_arr[$_POST['user_name']] === $_POST['user_pass']){
              $_SESSION['pageadmin'] = true;
              $_SESSION['pageadmin_user'] = $_POST['user_name'];
          }else{
              $_SESSION['msg'] = 'Invalid user name or password';
          }
      }

// Is user logged in?

    if(!isset($_SESSION['pageadmin'])){
        ?>
        <form action="/emailers/landing_admin.php" method="post">
            <div style='width:400px;'>
                <input type="hidden" id="user_login" name="user_login" value="1">
                <fieldset>
                    <legend>Login</legend>
                    <?php if(isset($_SESSION['msg'])){echo '<div style="color:red;">'.$_SESSION['msg'].'</div>';unset($_SESSION['msg']);}?>
                    <div>
                        <label for="user_name">User Name</label>
                        <input type="text" name="user_name">
                    </div>
                    <div>
                        <label for="user_pass">Password</label>
                        <input type="password" name="user_pass">
                    </div>
                    <div>
                        <button type="submit">Login</button>
                    </div>
                </fieldset>
            </div>
        </form>
        <?PHP
    }


Постановка проблемы:

Мне интересно, какие изменения мне нужно внести в приведенный выше код php, чтобы он выходил из системы через 30 минут посленет активности.

Я добавил следующий код в приведенный выше код, но, похоже, он не работает.

 /* Code Added (START)  */ 

   if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) {
      // last request was more than 30 minutes ago
      session_unset();     // unset $_SESSION variable for the run-time
      session_destroy();   // destroy session data in storage
   }
   $_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp

 /* Code Added (END)  */  

1 Ответ

1 голос
/ 05 марта 2019

Я не знаю, почему вы все еще не получаете это из комментариев.В любом случае это то, что они все имели в виду.Сделай это.

 /* Code Added (START)  */ 

   if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) {
      // last request was more than 30 minutes ago
      //session_unset();     // unset $_SESSION variable for the run-time
      session_destroy();   // destroy session data in storage
header('location:index.php'); // redirect to login page or home page
   }
   $_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp

 /* Code Added (END)  */  
...