2010-06-02 103 views
1

我想使管理员能够以后台用户的身份登录。现在我正在使用两个会话(名称不同的会话),一个用于管理员,另一个用于前端。从同一个文件(PHP)中写入两个会话

是否可以在第一个会话中写入,关闭它然后打开一个新的会话?

这是什么,我尝试但失败了的简化版本:

session_name('admin_session'); 
session_start(); 
// use first session without generatring any output 
session_close(); 

session_name('frontend_session'); 
session_start(); 
// use the second session 

感谢。

+1

我认为你误解了会话的实际内容。会话会唯一标识打开您的网站的浏览器。我不明白你为什么需要再次确认这一点。你应该把你的管理权限放在另一个地方。 – 2010-06-02 22:56:46

+0

这是网站编程的方式,我无能为力。 fontend检查一个会话中的权限(由其名称标识),后端检查不同会话中的权限。为此,我需要访问这两个会话。 – b2238488 2010-06-02 22:58:34

+0

那么你使用'session_destroy()'或'session_write_close()'?因为'session_close()'不存在。我也对如何检查两个“不同”会话感到困惑,我的印象是PHP只能在浏览器中为每个域存储一个名为PHPSESSID的cookie。 – 2010-06-02 23:01:48

回答

2

我已经为管理员提供了过去切换到“用户”的功能。

我通过序列化管理用户的$ _SESSION,然后将该字符串存储为$ _SESSION ['adminData'],然后覆盖所有其他会话变量与他登录的用户的会话变量并重定向到主页。主页上唯一不同的功能是对$ _SESSION ['adminData']进行if测试,该测试提供了“恢复为管理”链接...但是出于所有意图和目的,管理员现在以该用户身份登录。 单击“还原为管理员”链接时,代码逻辑简单地反序列化$ _SESSION ['adminData']。

相关问题