我想知道是否有人遇到过这样的问题:用户会打开Web应用程序的多个选项卡或窗口,然后发现应用程序的某些部分正在使用其他窗口/选项卡的数据(我相信你有)
显然,这是因为选项卡/窗口共享相同的PHP会话ID,因此当您调用记录并将其ID存储在会话中时,第二个窗口的调用将替换第一个窗口的ID并导致所有类型的头痛。
您提出了哪些解决方案来避免此问题?将ID放入隐藏字段?在脚本的顶部使用会话名称重写(我想避免)?我很好奇你为这个问题提出的解决方案。我的设计是垃圾,我不应该这样做吗?那些大牌球员如何解决这个问题?
我在这里提出同样的问题......
<?php
session_start();
// some code ...
// if user successful login
$_SESSION['user_id'] = $users_id
// we redirect user to member page
if (isset($_SESSION['user_id']){
header("Location:members.php");
}else{
header("Location:login.php");
}
?>
members.php
<?php
session_start();
if (!isset($_SESSION['user_id']){
header("Location:login.php");
}
echo "welcom user : {$_SESSION['user_id']}";
?>
答案 0 :(得分:0)
if(isset($_SESSION['user_id']) && !empty($_SESSION['user_id']))
{
echo "welcom user : {$_SESSION['user_id']}";
}
else
{
header("Location:login.php");
}
答案 1 :(得分:0)
不幸的是,在PHP中,没有有效的解决方案可以在多个Windows标签之间生成多个会话。
为此,您可以使用JavaScript HTML5 SessionStorage(window.sessionStorage)
您将生成一个随机ID,并按“浏览器”选项卡保存在会话存储中。然后,每个浏览器选项卡都有自己的ID。