如何在 PHP 中分别销毁管理会话和用户会话


How to destroy the admin session and the user session separately in PHP?

我目前正在使用一个应用程序,我遇到了一个明显的问题。我的应用程序中有两个主要面板,一个是管理面板,另一个是用户面板。

假设管理员当前登录到他的面板,同时用户面板上的某些用户可能已经登录。如果我在 PHP 中使用以下代码注销并重定向到登录页面(当管理员或任何用户注销时(,会发生什么。

session_start();
session_unset();
if(session_destroy())
{
    header("location:Login.php");   
}

假设用户正在注销,而管理员仍在登录。上面的代码将销毁会话,因此,管理员也将注销并重定向到登录页面。

我知道会话可以取消设置,unset($_SESSION['something'])但是记住应用程序中使用的所有会话变量是一个繁琐的过程,因为双方(管理员和用户(都已经使用了如此多的会话变量。

有没有办法分别销毁管理会话和用户会话?我的意思是当用户注销他的会话时,这绝对不会影响管理会话,反之亦然。

会话在用户之间是独立的。仅仅因为一个用户注销并不意味着每个会话都被取消 - 只是注销的用户。

简单的解决方案 - 为您的变量添加一个级别,以便管理员和用户变量位于完全独立的部分中,例如

$_SESSION['admin']['setting1'] = 'someval';
$_SESSION['admin']['setting2'] = 'otherval';
$_SESSION['user']['setting3'] = 'foo';
$_SESSION['user']['setting4'] = 'bar';

然后,如果用户注销管理部分,则只需

unset($_SESSION['admin']);

POOF,所有管理员变量都消失了。