使用两个 chrome 浏览器时,php 应用程序 session 会混淆

标签 php mysql google-chrome session cookies

我有一个带有 MySQL 数据库的 php 应用程序。用户及其密码存储在数据库中。问题是,有时,多个用户同时在同一台计算机上工作,每个用户都有自己的 session 。当我们在 internet explorer 上使用该系统时,它运行良好,但现在开始使用 google chrome。 发生的事情是 session 困惑,突然,用户“x”执行了一些操作, session 变成了 session 用户“Y”。 我希望你能帮助我,因为我不想回到 Internet Explorer。谢谢。

这里我保留打开 session 的代码:

$cons = "SELECT * FROM users WHERE login = '$textLogin' AND password = '$pwd'";
$result = mysql_query($cons, $conexion);
if ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{

    /*
    session_name(encriptar($textLogin));
    session_start(encriptar($textLogin));
    */
    session_set_cookie_params(0);
    session_start();
    $nroId = session_id();

    session_set_cookie_params(0);
    session_id($nroId);
    if(!isset($_SESSION)) 
    { 
    session_start(); 
    }  

/*  session_register($nroId);*/

    $_SESSION["loginUsr"] = $row["login"];
    $_SESSION["passwordUsr"] = $pwd;
    $_SESSION["idUser"] = $row["idUser"];
    $_SESSION["name"] = $row["name"];
    $_SESSION["lastname"] = $row["lastname"];


}

并且每次调用 php 页面时都会执行此代码(每次在 url 中发送 session_id 作为“登录”):

$sigueCheckS = 0;
if ($_SERVER['REQUEST_METHOD'] == "GET") {
    if (isset($_GET["login"])) {
        $textLogin = $_GET["login"];
        $sigueCheckS = 1;
    } else {
        $sigueCheckS = 0;
        $textLogin = "";
    };
};
if ($_SERVER['REQUEST_METHOD'] == "POST") {
    //if (!empty($_REQUEST["login"])) {
    if (isset($_REQUEST["login"])) {
        $sigueCheckS = 1;
        $textLogin = $_REQUEST["login"];
    } else {
        $sigueCheckS = 0;
        $textLogin = "";
    };
};

if ($sigueCheckS == 1) {
    session_id($textLogin);
    /*COMENTAR ESTAS TRES LINEAS*/
    $horas = 4;
    $tiempo = $horas * 3600;
    ini_set("session.gc_maxlifetime",$tiempo);
    /*COMENTAR ESTAS TRES LINEAS*/
    session_set_cookie_params(0);
    session_start();
     if (!isset($_SESSION["idUsuarioUsr"])) { 
        //echo "<br>no registrado";
        echo "<script language='javascript'>window.location='index.php?errorLogin=4';</script>";
        return; 
    };
} else {
    //echo "<br>todo bien";
    echo "<script language='javascript'>window.location='index.php?errorLogin=4';</script>";
    return;
};

最佳答案

尝试 Canary:

如果您的计算机运行的是 Windows 或 OSX,您可以使用 Google Chrome Canary .只需安装插件并单击地址栏末尾的 session cookie 图标。它将打开一个包含其自己的 session 数据的新窗口。

关于使用两个 chrome 浏览器时,php 应用程序 session 会混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30621489/

相关文章:

php - 来自 mysql_connect() 的警告未填充 mysql_error()

mysql - 数据库建模工具,用于从模式或任何其他工具生成 E-R 图,以直观地表示 MySQL 数据库模式

php - 如果我已经有 IDE、Web 主机和 FTP 客户端,是否需要安装 PHP、MySQL 和 XAMP 之类的东西?

jquery - 使用 jquery 使用 flexbox 分发图像,使图像高度相等 - Firefox 与 Chrome 行为

c# - 检查浏览器是chrome还是edge

php - 如何在主域的子域中包含一个php文件

PHP oops 变量传递错误

php - 正则表达式匹配其中包含 HTML 的占位符

mysql - 托管与 MySQL 配合使用的 Silverlight 数据库应用程序

javascript - 无法在 Javascript 中设置 cookie