Session PHP会话冲突

Session PHP会话冲突,session,php,Session,Php,我想知道是否有人遇到过这样的问题:用户会打开web应用程序的多个选项卡或窗口,然后发现应用程序的某些部分正在使用另一个窗口/选项卡的数据(我相信您已经遇到了) 显然,这是因为选项卡/窗口共享相同的PHP会话ID,因此当您调用记录并将其ID存储在会话中时,第二个窗口的调用将替换第一个窗口的ID,并可能导致所有类型的问题 您提出了哪些解决方案来避免此问题?将ID放入隐藏字段?在脚本顶部使用会话名称重写(我希望避免)?我很好奇你为这个问题想出了什么解决办法。我的设计是垃圾,我不应该这样做?大公司是如何

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

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

作为解决方案,您可以使用javascript HTML5会话存储(window.SessionStorage)


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

注销方法会很有用,或者如果用户试图登录,则会话_destroy()任何现有会话在新浏览器页面上,意味着同一浏览器上有一个新选项卡??可能无法为会话添加到期时间。从字面上讲,你的行为不是一种反常的行为,这是目前所有主要站点的工作方式:)您想提醒用户退出页面上的空闲进程并要求他注销,或者默认情况下添加5分钟的过期时间使页面过期。@错误相同或其他browser@Anigel是,但如果是新用户登录,将创建同一会话varibale,用户1仍将记录DNP它将不起作用,因为用户2已登录,并且已创建相同的会话变量,用户1也将登录,但其id将更改为用户2请让我直说,您希望同一浏览器上不同选项卡上的两个不同用户能够同时登录到两个不同的帐户吗?
if(isset($_SESSION['user_id']) && !empty($_SESSION['user_id']))
{
 echo "welcom user : {$_SESSION['user_id']}";
}
else
{
 header("Location:login.php");
}