我目前正在处理一个我遇到明显问题的应用程序.我的应用程序中有两个主要面板,一个是管理面板,另一个是用户面板,显而易见.
假设,管理员当前登录到他的面板,同时用户面板上的某些用户可能已经登录.如果我在PHP中使用以下代码注销并重定向到登录页面,会发生什么?当管理员或任何用户注销时).
session_start();
session_unset();
if(session_destroy())
{
header("location:Login.php");
}
Run Code Online (Sandbox Code Playgroud)
假设用户在管理员仍然登录时正在注销.上面的代码将破坏会话,因此管理员也会注销并重定向到登录页面.
我知道会话可以解决这样的问题,unset($_SESSION['something'])但是记住应用程序中使用的所有会话变量是一个繁琐的过程,因为在这两个方面(管理员和用户)已经使用了很多会话变量.
有没有办法分别销毁管理会话和用户会话?我的意思是当用户退出他的会话被销毁时,根本不会影响管理会话,反之亦然.
简单的解决方案 - 为您的vars添加一个级别,以便管理员和用户变量处于完全独立的部分,例如
$_SESSION['admin']['setting1'] = 'someval';
$_SESSION['admin']['setting2'] = 'otherval';
$_SESSION['user']['setting3'] = 'foo';
$_SESSION['user']['setting4'] = 'bar';
Run Code Online (Sandbox Code Playgroud)
然后,如果用户退出管理部分,这很简单
unset($_SESSION['admin']);
Run Code Online (Sandbox Code Playgroud)
和POOF,所有管理变量都消失了.
| 归档时间: |
|
| 查看次数: |
1444 次 |
| 最近记录: |