页面重新加载/刷新后登录会话销毁

ani*_*ani 0 php session

我很难理解不同的浏览器如何以不同的方式处理我的脚本。首先请看一下我用于验证用户的这个简单代码。

<?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)

Fab*_*iez 5

您需要调用session_start()所有页面。