在私人浏览中打开一个新选项卡


Open a new tab in a private browse

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/部分。