我很难理解不同的浏览器如何以不同的方式处理我的脚本。首先请看一下我用于验证用户的这个简单代码。
<?php
session_start ();
if (!isset($_SESSION["login"] , $_SESSION['email']))
{
header("location: index.php");
};
include ("DBconn.php");
?>
Run Code Online (Sandbox Code Playgroud)
会话成功创建并进入页面后,发生的情况是当我重新加载页面时,以某种方式销毁/丢失之前创建的登录会话并重定向到登录页面。我尝试检查会话 ID,但它没有改变。此问题在 FF 和 Chrome 最新版本中发生,在 Opera 18 或 Chrome 旧版本中不会发生。请有人提供一些帮助来解决这个问题。非常感谢。
这是我完整的 login.php。
<?php
session_start ();
include ("DBconn.php");
$email = mysql_real_escape_string ($_REQUEST['email']);
$pass = mysql_real_escape_string ($_REQUEST['pass']);
$passi_db = md5 ($_REQUEST['pass']);
$query = "SELECT * FROM members WHERE email = '$email'";
$mail = mysql_query ($query);
if (mysql_num_rows ($mail) == 1)
{
$query = "SELECT * FROM members WHERE email = '$email' AND pass_db = '$pass_db' AND active = 1";
$password = mysql_query ($query);
if (mysql_num_rows ($password ) == 1)
{
$d = mysql_fetch_array($password );
$operator = $d['operator_1'];
$_SESSION['login'] = 1;
$_SESSION['email'] = $email;
$data["status"] = "yes";
$data["operator"] = $operator;
echo json_encode($data);
}
else
{
$data["status"] = "NOTmatch";
echo json_encode($data);
}
}
else
{
$data["status"] = "emailNOTexist";
echo json_encode($data);
}
mysql_close ();
?>
Run Code Online (Sandbox Code Playgroud)