我是PHP的新手,我在没有找到我正在寻找的答案的情况下阅读其他文章,但仍然不知道我想做的事情是否有意义。
我正在使用PHP 7。
我的用户身份验证页面,检查凭据然后执行session_start()
,在浏览器中创建会话服务器端和cookie客户端。
Web应用程序的每个其他页面然后调用session_start()
以恢复会话信息,在这种情况下检查cookie。到目前为止一切正常...至少当我有一次登录时。
我希望能够让多个用户使用cookie同时登录同一个浏览器(在另一个标签上,例如。)。我不想将会话ID附加到URL。
我设法使用session_id()
在服务器端根据用户名在身份验证页面中session_start()
创建不同的会话,但问题出在客户端。
第一次成功登录(session_start()
)会创建一个cookie,第二次登录会更新同一个cookie,从而破坏之前创建的会话。
因此,当恢复会话时,session_start()
将仅恢复最后一个会话,根据会话信息混合从DB获取的数据。
有没有办法让session_start()
为每次登录创建一个cookie并让PHP使用cookie恢复正确的会话?
有什么想法吗?
进一步详情: 我正在更新遗留应用程序,试图解决一些安全问题。对多个会话的需求来自管理目的,其中管理员访问同一站点。它需要分离会话的原因是,根据会话信息,数据是从不同的数据库中提取的。因此,常规使用每个用户只需要一个会话,但管理员需要根据该登录进行多次登录查看不同的数据。
答案 0 :(得分:0)
您可以使用相同的会话,但更改您要查找的变量名称:
if ( $_SERVER['REQUEST_URI'] == '/admin/' ):
$session_name = 'session1';
else:
$session_name = 'session2';
endif;
session_start( $session_name );
答案 1 :(得分:0)
使用cookie处理会话的默认PHP行为 。
..浏览器的默认行为是"重用"如果您在另一个标签中重新访问URL,则使用相同的Cookie集。所以,如下所述:
编辑,为清楚起见:我可以考虑使用多个会话时的两种情况:
这是我的参考框架。基于此,我认为问题是为了发展。我并不是说该网站需要安装额外的软件包。 Flash将是唯一一个与之相关的人......