0

我想知道是否有人遇到过这样的问题:用户会打开 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']}";
?>
4

2 回答 2

0
if(isset($_SESSION['user_id']) && !empty($_SESSION['user_id']))
{
 echo "welcom user : {$_SESSION['user_id']}";
}
else
{
 header("Location:login.php");
}
于 2013-07-15T11:19:00.920 回答
0

不幸的是,在 PHP 中没有有效的解决方案来跨多个窗口选项卡生成多个会话。

作为解决方案,您可以使用 javascript HTML5 SessionStorage (window.sessionStorage)

您将生成一个随机 id 并保存在每个浏览器选项卡的会话存储中。然后每个浏览器选项卡都有自己的 ID。

于 2019-01-25T09:53:06.167 回答