如果您的用户使用同一个浏览器,那么您也不能中继正常的会话功能,因为它在浏览器中共享。这就是为什么您可以打开新窗口/标签,例如。
因此我们不能使用 cookie 来创建会话,而是需要在 URL 中的每个请求中发送会话信息。
选项 1:使其成为单页网站并使用 ajax 加载数据。
选项 2:在用户 URL 中包含会话 ID:s
编辑:一个更简单的选择是让您的用户使用隐身模式。然后会话不会与其他实例共享。我有时会用它在不同的 gmail 帐户上登录两次。(不同的浏览器厂商用自己的名字来调用函数)
Edit2:首先,会话是由服务器在浏览器中设置 cookie 创建的。该 cookie 仅包含一个“随机”字符串。该字符串可以对应于服务器上的文件(最常见)或数据库中的一行(如果您有多个 Web 服务器前面有负载均衡器,则很实用。如果另一个用户在哪里猜到这个随机字符串,他将获得访问权限到用户会话(这也称为会话劫持)。
您可以将会话保存在 URL 中,而不是将会话存储在 cookie 中,例如http://www.example.com/?sess_id=jdR3Tfs
. 您可以自己轻松地构建此逻辑,但在大多数 Web 框架中都有帮助程序来执行此操作,例如在 PHP 中
在 php.ini 中设置
session.use_cookies=0
session.use_trans_sid=1
有时需要在上面的安排中手动获取会话 ID,如果我没记错的话应该是这样的:
session_id($_GET['sessionid']);
session_start();
或者
session_id($_GET['PHPSESSID']);
session_start();
为了确保您可以直接查看print_r($_GET)
或查看创建的 URL。
否则,您可以手动进行更多操作
<?php
// testpage.php
session_start();
if (isset($_SESSION['test']){
$_SESSION['test'] = 'Back again!';
}
$_SESSION['test'] = 'Hello world!';
?>
<p><?php echo $_SESSION['test']; ?></p>
<a href="testpage.php?<?php echo htmlspecialchars(SID); ?>">Click me</a>.
编辑 3:另一种方式,当您仍然可以使用 cookie 时,您的用户启用“隐私浏览”,请参阅有关如何在此处启用的更多信息http://techlogon.com/2012/05/10/comparison-of-private-在浏览器中浏览,即 chrome 和 firefox/