我有2个用户级别,一个用于admin_tbl,另一个用于cashier_tbl,它们具有相同的数据库。我的问题是我是退出收银员还是管理员,当我刷新页面时,另一个也退出了。我不知道问题是什么,我使用了不同的表,但它同时注销了它们两个?请帮我解决这个问题,给我一些错误的想法。谢谢!
更新:这是我的cashier_tbl和admin_tbl的退出代码
这是我的cashier_tbl代码
<?php
session_start();
$_SESSION = array();
if (ini_get("session.use_cookies")){
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
}
session_destroy();
header("Location: index.php");
?>
这是我的admin_tbl
<?php
session_start();
$_SESSION = array();
if (ini_get("session.use_cookies")){
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
}
session_destroy();
header("Location: index.php");
?>
答案 0 :(得分:0)
你在这一行的问题:
if (isset($_SESSION['user_id']))
{
header("Location: user_maintenance.php");
}
即使$ _SESSION为空,它也会将您重定向到user_maintenance.php。并在:
if (isset($_SESSION['user_id']))
{
header("Location: order.php");
}
与。相同。
这是其他正确方法。
我认为您从未在注销方法中设置session_unset()
或session_destroy()
。
在上面代码的第一行中删除session_unset()
和session_start();
,这不是必需的。
检查用户登录方法,如上面的代码,在文件order.php和user_maintenance.php中,启动会话。它会是这样的:
<?php
session_start();
// check if the user was login or not
if($_SESSION['login'] == false){
header('Location: user-is-not-login.php');
}
?>
// this area can be access if session is true.
在会话设置的位置创建注销方法。像这样的东西:
<?php
session_start();
session_destroy();
session_unset();
header('Location: login.php');
?>
您需要在设置新会话之前销毁会话。
希望这些帮助。