我有一个使用会话进行用户管理的应用程序。在应用程序的根文件夹下,我有一个管理面板,我需要有不同的会话,否则它与根会话冲突。
-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,如果不是
这将激活会话的名称基于这个布尔值的结果:
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();
访问会话名称