繁体   English   中英

PHP如何使用Cookie在同一浏览器中管理多个会话?

[英]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。.因此,如下所述:

  • 简单的方法可能是启动另一个浏览器。 如果您安装了多个浏览器,则不是同一浏览器,而是像firefox和chrome。
  • 另一种方法是安装浏览器插件,例如适用于Chrome的Sessionbox或适用于Firefox的Multifox。

编辑,为清楚起见:我可以想到两种情况,将使用多个会话:

  • 在开发过程中。 取决于应用程序,但显而易见的情况是测试两个用户之间的通信。
  • 部署后。 尽管我从未见过一个站点需要同一用户帐户进行多次登录。

这是我的参考框架。 基于此,我认为问题在于发展。 我不建议该站点应要求安装额外的软件包。 Flash将是唯一一个摆脱了这一困境的技术。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM