Php 如何在一页中同时保持两个会话?
我有一个在线服务工具,用户可以注册并使用它 我有这个服务的管理控制面板。有时,当用户告诉我们一些关于数据和可用性的奇怪事情时,我们需要像他们登录一样检查它们 所以我决定在管理面板中有一个页面,名为“以xx用户身份登录”,其中xx是我们服务的用户 我只需为特定的用户帐户设置会话变量,并绕过登录选项即可。。当我完成测试后,我注销并再次以管理员身份登录以执行其他活动 但现在我不需要每次以不同的用户身份登录后注销,然后以管理员身份登录 我可以为一个页面/服务同时设置两个会话吗 (即)在浏览器的一个选项卡中,我充当管理员,在另一个选项卡中,我将充当用户 有什么想法吗Php 如何在一页中同时保持两个会话?,php,session,Php,Session,我有一个在线服务工具,用户可以注册并使用它 我有这个服务的管理控制面板。有时,当用户告诉我们一些关于数据和可用性的奇怪事情时,我们需要像他们登录一样检查它们 所以我决定在管理面板中有一个页面,名为“以xx用户身份登录”,其中xx是我们服务的用户 我只需为特定的用户帐户设置会话变量,并绕过登录选项即可。。当我完成测试后,我注销并再次以管理员身份登录以执行其他活动 但现在我不需要每次以不同的用户身份登录后注销,然后以管理员身份登录 我可以为一个页面/服务同时设置两个会话吗 (即)在浏览器的一个选项卡
我记得我见过phpbb使用它们…会话是一种全球可用的阵列,您可以像这样分离前端和后端会话:
<?php
$_SESSION['frontend']['logged_id'] = true;
$_SESSION['backend']['logged_id'] = false;
?>
基本上,你所寻求的这条推理路线是一个混乱的过程 您需要的是一个健壮的解决方案,为此,我建议采用如下方案:维护会话变量:
- 真实用户名
- 实时登录
- 虚拟用户名称
- 虚拟登录时间
因此,当管理员想要以某人身份登录时,您可以设置最后两个。您的安全人员通常应检查最后两个。对管理员页面的访问应该基于前两个页面。我不知道这是否是解决您问题的有效解决方案,但是如果您使用firefox,您可以使用两个不同的配置文件启动浏览器两次。您不会将应用程序放在同一个选项卡中,但至少您拥有具有不同会话的同一浏览器。如果您复制旧的配置文件,您也应该能够拥有相同的历史记录和插件
如果您决定使用“-p-无远程”作为firefox可执行文件的附加参数。我认为可能有两种解决方案:
- 首先,如果您将Admin和服务作为两个不同的应用程序,它们将管理每个应用程序的会话。如果你的服务不是这样设计的,或者如果改变会带来巨大的成本,那就不是一个好的选择
- 其次,您可以在会话对象中设置两个对象,一个用于管理,另一个用于服务
- 使用两种不同的浏览器
- 从两个不同的(虚拟)计算机连接
- 使用CookiePie之类的工具来允许每个选项卡使用不同的Cookie
- 通过代理连接一个实例
- 如果可以,通过两个不同的域托管相同的web应用程序,并在每个会话中使用一个
- 使用hosts文件提供额外的域名
- 如果会话是通过URL而不是cookie传播的,那么这将很自然地工作,但它会带来各种糟糕的可用性和安全性后果
<?php
foreach ($_SESSION as $key => $value)
{
if (substr($key, 0, 3) == 'my_')
{
continue;
}
unset($_SESSION[$key]);
}
?>