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


Setting two different sessions on same domain for two different folders in PHP

我有一个使用会话进行用户管理的应用程序。在应用程序的根文件夹下,我有一个管理面板,我需要有不同的会话,否则它与根会话冲突。

-root
   -admin/adminFiles
   -rootFiles

我浏览了这个线程和文档,并在我的管理文件夹

中尝试了以下代码
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();

这只是不启动会话。日志中也没有错误。我哪里做错了?

我想这样做,因为admin文件夹只会被少数特权用户访问,而不是很频繁。我知道session_name()增加了和开销。但是我想通过这种方式来解决这个问题。

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

假设$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
  }

在启动会话之前尝试使用session_name例如,在第一个域中,使用

session_name("AdminPanel");
session_start();

在第二个域中,使用

session_name("WebsiteID");
session_start();

访问会话名称