如果登录会话在php中过期,则重定向

如果登录会话在php中过期,则重定向,php,session,Php,Session,我正在尝试在会话时间到期时注销。我使用了以下代码: home.php session_start(); require_once 'class.user.php'; $user_home = new USER(); if($user_home->isLoginSessionExpired()) { header("Location:logout.php?session_expired=1"); } if(!$user_home->is_logged_in

我正在尝试在会话时间到期时注销。我使用了以下代码:

home.php

session_start(); 
require_once 'class.user.php'; 
$user_home = new USER(); 
if($user_home->isLoginSessionExpired()) {
        header("Location:logout.php?session_expired=1");
    }
if(!$user_home->is_logged_in()) 
{ 
$user_home->redirect($web); 
}
public function isLoginSessionExpired() {
    $login_session_duration = 10; 
    $current_time = time(); 
    if(isset($_SESSION['loggedin_time']) and isset($_SESSION["userSession"])){  
        if(((time() - $_SESSION['loggedin_time']) > $login_session_duration)){ 
            return true; 
        } 
    }
    return false;
}

    public function is_logged_in()
    {
        if(isset($_SESSION['userSession']))
        {
            return true;
        }
    }public function logout()
{
    session_destroy();
    $_SESSION['userSession'] = false;
}public function login($uname,$upass)
{
    try
    {
        $stmt = $this->conn->prepare("SELECT * FROM tbl_users WHERE userName=:username");
        $stmt->execute(array(":username"=>$uname));
        $userRow=$stmt->fetch(PDO::FETCH_ASSOC);

        if($stmt->rowCount() == 1)
        {
            if($userRow['userStatus']=="Y")
            {
                if($userRow['userPass']==md5($upass))
                {
                    $_SESSION['userSession'] = $userRow['userID'];
                     $_SESSION['user_name'] = $userRow['userName'];
                    return true;
                }
                else
                {
                    header("Location: index.php?error");
                    exit;
                }
            }
            else
            {
                header("Location: index.php?inactive");
                exit;
            }   
        }
        else
        {
            header("Location: index.php?error");
            exit;
        }       
    }
    catch(PDOException $ex)
    {
        echo $ex->getMessage();
    }
}
<?php
session_start();
require_once 'class.user.php';
$user = new USER();

if(!$user->is_logged_in())
{
    $user->redirect($web);
}

if($user->is_logged_in()!="")
{
    $user->logout();    
    $user->redirect($web);
}
$url = $web;
if(isset($_GET["session_expired"])) {
    $url .= "?session_expired=" . $_GET["session_expired"];
}
header("Location:$url");
?>
<?php
session_start();
require_once 'class.user.php';
$user_login = new USER();

if($user_login->is_logged_in()!="")
{
    $user_login->redirect($web.$_SESSION['user_name']);
}

if(isset($_POST['btn-login']))
{
    $uname = trim($_POST['txtuname']);
    $upass = trim($_POST['txtupass']);

    if($user_login->login($uname,$upass))
    {
        $user_login->redirect($uname);
    }
}
?>
class.user.php

session_start(); 
require_once 'class.user.php'; 
$user_home = new USER(); 
if($user_home->isLoginSessionExpired()) {
        header("Location:logout.php?session_expired=1");
    }
if(!$user_home->is_logged_in()) 
{ 
$user_home->redirect($web); 
}
public function isLoginSessionExpired() {
    $login_session_duration = 10; 
    $current_time = time(); 
    if(isset($_SESSION['loggedin_time']) and isset($_SESSION["userSession"])){  
        if(((time() - $_SESSION['loggedin_time']) > $login_session_duration)){ 
            return true; 
        } 
    }
    return false;
}

    public function is_logged_in()
    {
        if(isset($_SESSION['userSession']))
        {
            return true;
        }
    }public function logout()
{
    session_destroy();
    $_SESSION['userSession'] = false;
}public function login($uname,$upass)
{
    try
    {
        $stmt = $this->conn->prepare("SELECT * FROM tbl_users WHERE userName=:username");
        $stmt->execute(array(":username"=>$uname));
        $userRow=$stmt->fetch(PDO::FETCH_ASSOC);

        if($stmt->rowCount() == 1)
        {
            if($userRow['userStatus']=="Y")
            {
                if($userRow['userPass']==md5($upass))
                {
                    $_SESSION['userSession'] = $userRow['userID'];
                     $_SESSION['user_name'] = $userRow['userName'];
                    return true;
                }
                else
                {
                    header("Location: index.php?error");
                    exit;
                }
            }
            else
            {
                header("Location: index.php?inactive");
                exit;
            }   
        }
        else
        {
            header("Location: index.php?error");
            exit;
        }       
    }
    catch(PDOException $ex)
    {
        echo $ex->getMessage();
    }
}
<?php
session_start();
require_once 'class.user.php';
$user = new USER();

if(!$user->is_logged_in())
{
    $user->redirect($web);
}

if($user->is_logged_in()!="")
{
    $user->logout();    
    $user->redirect($web);
}
$url = $web;
if(isset($_GET["session_expired"])) {
    $url .= "?session_expired=" . $_GET["session_expired"];
}
header("Location:$url");
?>
<?php
session_start();
require_once 'class.user.php';
$user_login = new USER();

if($user_login->is_logged_in()!="")
{
    $user_login->redirect($web.$_SESSION['user_name']);
}

if(isset($_POST['btn-login']))
{
    $uname = trim($_POST['txtuname']);
    $upass = trim($_POST['txtupass']);

    if($user_login->login($uname,$upass))
    {
        $user_login->redirect($uname);
    }
}
?>
logout.php

session_start(); 
require_once 'class.user.php'; 
$user_home = new USER(); 
if($user_home->isLoginSessionExpired()) {
        header("Location:logout.php?session_expired=1");
    }
if(!$user_home->is_logged_in()) 
{ 
$user_home->redirect($web); 
}
public function isLoginSessionExpired() {
    $login_session_duration = 10; 
    $current_time = time(); 
    if(isset($_SESSION['loggedin_time']) and isset($_SESSION["userSession"])){  
        if(((time() - $_SESSION['loggedin_time']) > $login_session_duration)){ 
            return true; 
        } 
    }
    return false;
}

    public function is_logged_in()
    {
        if(isset($_SESSION['userSession']))
        {
            return true;
        }
    }public function logout()
{
    session_destroy();
    $_SESSION['userSession'] = false;
}public function login($uname,$upass)
{
    try
    {
        $stmt = $this->conn->prepare("SELECT * FROM tbl_users WHERE userName=:username");
        $stmt->execute(array(":username"=>$uname));
        $userRow=$stmt->fetch(PDO::FETCH_ASSOC);

        if($stmt->rowCount() == 1)
        {
            if($userRow['userStatus']=="Y")
            {
                if($userRow['userPass']==md5($upass))
                {
                    $_SESSION['userSession'] = $userRow['userID'];
                     $_SESSION['user_name'] = $userRow['userName'];
                    return true;
                }
                else
                {
                    header("Location: index.php?error");
                    exit;
                }
            }
            else
            {
                header("Location: index.php?inactive");
                exit;
            }   
        }
        else
        {
            header("Location: index.php?error");
            exit;
        }       
    }
    catch(PDOException $ex)
    {
        echo $ex->getMessage();
    }
}
<?php
session_start();
require_once 'class.user.php';
$user = new USER();

if(!$user->is_logged_in())
{
    $user->redirect($web);
}

if($user->is_logged_in()!="")
{
    $user->logout();    
    $user->redirect($web);
}
$url = $web;
if(isset($_GET["session_expired"])) {
    $url .= "?session_expired=" . $_GET["session_expired"];
}
header("Location:$url");
?>
<?php
session_start();
require_once 'class.user.php';
$user_login = new USER();

if($user_login->is_logged_in()!="")
{
    $user_login->redirect($web.$_SESSION['user_name']);
}

if(isset($_POST['btn-login']))
{
    $uname = trim($_POST['txtuname']);
    $upass = trim($_POST['txtupass']);

    if($user_login->login($uname,$upass))
    {
        $user_login->redirect($uname);
    }
}
?>

login.php

session_start(); 
require_once 'class.user.php'; 
$user_home = new USER(); 
if($user_home->isLoginSessionExpired()) {
        header("Location:logout.php?session_expired=1");
    }
if(!$user_home->is_logged_in()) 
{ 
$user_home->redirect($web); 
}
public function isLoginSessionExpired() {
    $login_session_duration = 10; 
    $current_time = time(); 
    if(isset($_SESSION['loggedin_time']) and isset($_SESSION["userSession"])){  
        if(((time() - $_SESSION['loggedin_time']) > $login_session_duration)){ 
            return true; 
        } 
    }
    return false;
}

    public function is_logged_in()
    {
        if(isset($_SESSION['userSession']))
        {
            return true;
        }
    }public function logout()
{
    session_destroy();
    $_SESSION['userSession'] = false;
}public function login($uname,$upass)
{
    try
    {
        $stmt = $this->conn->prepare("SELECT * FROM tbl_users WHERE userName=:username");
        $stmt->execute(array(":username"=>$uname));
        $userRow=$stmt->fetch(PDO::FETCH_ASSOC);

        if($stmt->rowCount() == 1)
        {
            if($userRow['userStatus']=="Y")
            {
                if($userRow['userPass']==md5($upass))
                {
                    $_SESSION['userSession'] = $userRow['userID'];
                     $_SESSION['user_name'] = $userRow['userName'];
                    return true;
                }
                else
                {
                    header("Location: index.php?error");
                    exit;
                }
            }
            else
            {
                header("Location: index.php?inactive");
                exit;
            }   
        }
        else
        {
            header("Location: index.php?error");
            exit;
        }       
    }
    catch(PDOException $ex)
    {
        echo $ex->getMessage();
    }
}
<?php
session_start();
require_once 'class.user.php';
$user = new USER();

if(!$user->is_logged_in())
{
    $user->redirect($web);
}

if($user->is_logged_in()!="")
{
    $user->logout();    
    $user->redirect($web);
}
$url = $web;
if(isset($_GET["session_expired"])) {
    $url .= "?session_expired=" . $_GET["session_expired"];
}
header("Location:$url");
?>
<?php
session_start();
require_once 'class.user.php';
$user_login = new USER();

if($user_login->is_logged_in()!="")
{
    $user_login->redirect($web.$_SESSION['user_name']);
}

if(isset($_POST['btn-login']))
{
    $uname = trim($_POST['txtuname']);
    $upass = trim($_POST['txtupass']);

    if($user_login->login($uname,$upass))
    {
        $user_login->redirect($uname);
    }
}
?>


但是我的代码不起作用!如何解决问题?

用户
注销()方法中的问题

因为如果您执行
$\u会话['userSession']=false
isset($\u SESSION[“userSession”])
仍将为您提供
true
。因此在class.user.php中应该是:

public function logout(){
    session_destroy();
    unset($_SESSION['userSession']);
}

不工作?你能描述一下吗?不,它没有显示任何错误!它不仅工作。请在上进行错误报告,我认为它对代码调试有帮助:ini_set(“display_errors”,“1”);错误报告(E_全部);因此,注销不起作用,但您没有显示
用户的
注销
方法
您没有在登录时设置
登录时间
。你把它放在别的地方了吗?在
isLoginSessionExpired
方法中,检查是否设置了
loggedinu time
。但是你真的设置了它吗?它没有帮助我。@Chiru:仅仅说一些事情不起作用是毫无帮助的,因为有人试图帮助你,结果你可能会被否决。请尽量避免使用“它没有帮助”或“它不起作用”的短语。相反,尽可能详细地说明它是如何不起作用的。你犯了什么错误?你得到了什么输出?你能提供哪些观察结果来帮助别人帮助你前进?