如果登录会话在php中过期,则重定向
我正在尝试在会话时间到期时注销。我使用了以下代码: home.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
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:仅仅说一些事情不起作用是毫无帮助的,因为有人试图帮助你,结果你可能会被否决。请尽量避免使用“它没有帮助”或“它不起作用”的短语。相反,尽可能详细地说明它是如何不起作用的。你犯了什么错误?你得到了什么输出?你能提供哪些观察结果来帮助别人帮助你前进?