admin可以在他的网站上看到他的所有用户配置文件,这样他就可以点击用户链接以用户身份登录。现在的问题是我已经将用户和管理员的会话名称设置为相同。现在我需要在私人浏览器中打开用户配置文件。其他明智的会话冲突也会发生。那么我如何才能在私人浏览器中打开它,而我又无法更改会话名称。如果我确实需要对整个网站进行检查。是否可以进行
help me to do it
你不能这样做,你不能干扰浏览器的功能,这取决于用户想要以何种模式打开你的网站。
对于你想做的…
// have a session which specifies the type of user.
$_SESSION["utype"] = "admin" // or user
并使用它来相应地显示内容。
你不能那样做。它取决于用户,它将在专用浏览器或默认浏览器中打开。您不能更改浏览器的行为。尤其是并非所有浏览器都有这样的功能!
您不能在任何浏览器中强制链接以私人浏览模式打开,因此您需要使用$_SESSION
跟踪您的唯一用户会话,正如其他人所提到的那样。
您还需要根据当前用户实现一个唯一的URL结构。Gmail通过使用以下URL结构来实现此功能:
- https://mail.google.com/mail/u/0/#inbox
- https://mail.google.com/mail/u/1/#inbox
- https://mail.google.com/mail/u/2/#inbox
URL中显示的数字/0/
指的是当前登录的每个用户。请记住,该数字不是用户ID或任何潜在的敏感信息,只是指会话中值的索引。
在幕后,$_SESSION
的一个简单示例如下:
$_SESSION['authenticated_users'] = [
0 => [
'user_id' => 123,
'username' => 'John',
'user_role' => 'admin',
],
1 => [
'user_id' => 456,
'username' => 'Jill',
'user_role' => 'customer',
],
2 => [
'user_id' => 789,
'username' => 'Mark',
'user_role' => 'customer',
],
];
您需要以这样一种方式组织代码,即它在请求的URL和$_SESSION
中经过身份验证的用户之间验证当前用户。
在只有一个用户(例如客户)登录网站的情况下,您不需要在URL中显示/0/
部分。