我有一个MySQL数据库的php应用程序。用户及其密码存储在数据库中。问题是,有时几个用户同时在同一台计算机上工作,每个用户都有自己的会话。当我们在ie浏览器上使用这个系统时,它运行得很好,但现在开始使用google chrome。发生的情况是,会话混淆了,突然,用户"x"执行了一些操作,会话变成了会话用户"Y"。我希望你能帮助我,因为我不想回到ie浏览器。谢谢你。
这里我保留了打开会话的代码:
$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页面时执行(session_id每次在url中作为"login"发送):
$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;
};
Try Canary:
如果你的电脑运行Windows或OSX,你可以使用谷歌Chrome金丝雀。只需安装插件并单击地址栏末尾的会话cookie图标。它将打开一个新的窗口,显示它自己的会话数据。