在PHP中为两个不同的文件夹在同一个域上设置两个不同的会话

时间:2014-07-30 14:30:20

标签: php session session-variables session-cookies

我有一个使用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()会增加和开销。但是想通过这种方式来解决它。

1 个答案:

答案 0 :(得分:1)

所以关于你在数据库中有一个admin标志的说法:

假设$admin包含布尔值:如果您的数据库确认用户为管理员,则为true;如果不是

,则为false

这将根据此布尔值的结果激活名称会话:

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
  }