[英]PHP how to manage multiple session in same browser using cookies?
我是PHP的新手,我在阅读其他文章时都没有找到想要的答案,但仍然不知道我想做的事情是否有意义。
我正在使用PHP 7。
我的用户身份验证页面,检查凭据,然后执行session_start()
,在浏览器中创建会话服务器端和cookie客户端。
然后,Web应用程序的每个其他页面都会调用session_start()
来恢复会话信息,在这种情况下,将检查cookie。 到目前为止,一切正常……至少在我一次登录时。
我希望能够使用cookie同时在同一浏览器( 例如,在另一个选项卡上)上登录多个用户。 我不想将会话ID附加到URL。
我设法创建在服务器端使用不同的会话session_id()
之前session_start()
在基于用户名的认证页面,但问题是在客户端。
第一次成功登录( session_start()
)创建一个cookie,第二次登录更新同一cookie,从而破坏了先前创建的会话。
因此,当要恢复会话时, session_start()
将仅恢复最后一个会话,并根据会话信息混合从数据库中获取的数据。
有没有办法让session_start()
为每次登录创建一个cookie,并使PHP使用cookie恢复正确的会话?
有任何想法吗?
更多详细信息:我正在更新旧版应用,试图解决一些安全问题。 出于管理目的,管理员需要访问同一站点,因此需要多个会话。 需要分开会话的原因是,根据会话信息,数据是从其他数据库中获取的。 因此,常规用法每个用户只需要一个会话,但是管理员需要进行多次登录才能根据该登录查看不同的数据。
您可以使用相同的会话,但可以更改要查找的变量名称:
if ( $_SERVER['REQUEST_URI'] == '/admin/' ):
$session_name = 'session1';
else:
$session_name = 'session2';
endif;
session_start( $session_name );
PHP的默认行为是使用cookie处理会话。
..并且,如果您在另一个选项卡中重新访问URL,浏览器的默认行为是“重用”同一组cookie。.因此,如下所述:
编辑,为清楚起见:我可以想到两种情况,将使用多个会话:
这是我的参考框架。 基于此,我认为问题在于发展。 我不建议该站点应要求安装额外的软件包。 Flash将是唯一一个摆脱了这一困境的技术。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.