如何在PHP中单独销毁管理会话和用户会话?

时间:2012-05-13 16:02:49

标签: php session

我目前正在处理一个我遇到明显问题的应用程序。我的应用程序中有两个主要面板,一个是 admin 面板,另一个是用户面板,显而易见。

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

session_start();
session_unset();

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

假设用户在管理员仍然登录时正在注销。上述代码将破坏会话,因此管理员也会注销并重定向到登录页面。 / p>

我知道会话可以取消这样的unset($_SESSION['something']),但是记住应用程序中使用的所有会话变量是一个繁琐的过程,因为在这两个方面已经使用了很多会话变量(admin和用户)。

有没有办法分别销毁管理会话和用户会话?我的意思是当用户退出他的会话被销毁时,根本不会影响管理会话,反之亦然。

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:5)

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

$_SESSION['admin']['setting1'] = 'someval';
$_SESSION['admin']['setting2'] = 'otherval';

$_SESSION['user']['setting3'] = 'foo';
$_SESSION['user']['setting4'] = 'bar';

然后,如果用户退出管理部分,那就是一个简单的

unset($_SESSION['admin']);

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