我有一个使用session进行用户管理的应用程序。在应用程序的根文件夹下,我有一个管理面板,我需要有不同的会话,否则它会与根会话冲突。
-root
-admin/adminFiles
-rootFiles
我浏览了this主题以及文档并在我的管理文件夹中尝试了以下代码
if(HTTP_SERVER != 'http://localhost'){
session_save_path("/tmp");
}
session_name('session_for_admin');
ini_set('session.cookie_path','/session_for_admin');
session_set_cookie_params(60*60*24*5,'session_for_admin');
session_start();
这只是不启动会话。日志中也没有错误。 我在这里做错了什么。
我想这样做,因为管理文件夹只是由少数特权用户访问而不是非常频繁。我知道session_name()
会增加和开销。但是想通过这种方式来解决它。
答案 0 :(得分:1)
所以关于你在数据库中有一个admin标志的说法:
假设$admin
包含布尔值:如果您的数据库确认用户为管理员,则为true;如果不是
这将根据此布尔值的结果激活名称会话:
if ($admin)
{session_name('session_for_admin');}
else
{session_name('session_for_others');}
session_start();
这将启动和管理两个不同的会话,就像两个不同的用户拥有自己的会话一样。
不可否认,您可能希望做其他事情,例如更改工作目录或包含不同的文件。
当用户以admin身份登录时,您也可以通过在会话中设置变量来执行此操作:
$_SESSION['admin'] = true;
从那时起,您可以检查并使用某些文件或其他类似文件:
if ($_SESSION['admin'])
{// use files in admin folder
}
else
{// use files in root folder
}