代码之家  ›  专栏  ›  技术社区  ›  flash

如何在没有活动的情况下在php中30分钟后注销用户?

  •  0
  • flash  · 技术社区  · 7 年前

    我在一个网站上工作,我想注销用户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)  */  
    
    0 回复  |  直到 7 年前
        1
  •  1
  •   ket-c    7 年前

    我不知道你为什么还没从评论中得到答案。不管怎样,这就是他们的意思。 做这个。

     /* 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)  */  
    
    推荐文章