PHP登录脚本需要用户登录两次

PHP登录脚本需要用户登录两次,php,redirect,login,session-variables,Php,Redirect,Login,Session Variables,我创建的登录系统可以很好地记录用户最初,用户被重定向到预期的索引。但是,当用户单击导航链接导航到另一个页面(受限制)时,用户将重定向到登录页面。当他们第二次登录时,所有页面都可以正常访问 我尝试打印会话id并转储会话数组。我注意到,当用户进入a页登录时,首先他们有会话id“x”,然后他们被重定向到索引页,在那里他们仍然有会话id“x”。但是,当他们尝试导航到站点上的另一个页面时,他们会被重定向到登录页面,并且会话id为“y”。当他们第二次登录时,每个页面都显示他们具有会话id“y” 重定向用户后

我创建的登录系统可以很好地记录用户最初,用户被重定向到预期的索引。但是,当用户单击导航链接导航到另一个页面(受限制)时,用户将重定向到登录页面。当他们第二次登录时,所有页面都可以正常访问

我尝试打印会话id并转储会话数组。我注意到,当用户进入a页登录时,首先他们有会话id“x”,然后他们被重定向到索引页,在那里他们仍然有会话id“x”。但是,当他们尝试导航到站点上的另一个页面时,他们会被重定向到登录页面,并且会话id为“y”。当他们第二次登录时,每个页面都显示他们具有会话id“y”

重定向用户后,是什么导致会话id发生更改

这是我的登录脚本

   session_start();

   $username = mysql_real_escape_string($_POST['username']);
   $password = mysql_real_escape_string(md5($_POST['password']));
   $submit = $_POST['submit'];
   $error = '';

    if(isset($submit)){     
    // Check if fields are filled out
    if($username == '' or $password == ''){
        $error = 'Please enter a Username and Password';
    }else{  // Proceed with login process


        // See if user exists
        $query = mysql_query("SELECT * FROM users WHERE username='$username'");

        if(mysql_num_rows($query)<1){
            echo 'Invalid Username/Password Combination';
        }else{  // Grab user's information
            $user = mysql_fetch_assoc($query);

            if($password == $user['password']){//Login Success, Redirect and set Session Vars


                $_SESSION["loggedIn"] = true;
                $_SESSION['username'] = $user['username'];
                $_SESSION['name'] = $user['first'];
                $_SESSION['auth'] = $user['authorization'];
                session_write_close();      

                header("Location: home.php");
                exit;

            }else{
                $error = 'Invalid Username/Password Combination';
            }
        }   
    }
    }
session_start();
$username=mysql\u real\u escape\u字符串($\u POST['username']);
$password=mysql\u real\u escape\u字符串(md5($\u POST['password']);
$submit=$_POST['submit'];
$error='';
如果(isset($submit)){
//检查字段是否已填写
如果($username=''或$password=''){
$error='请输入用户名和密码';
}否则{//继续登录过程
//查看用户是否存在
$query=mysql_query(“从用户名为“$username”的用户中选择*);

如果(mysql_num_rows($query)尝试在受限页面上设置会话变量

session_start();
$_SESSION["loggedIn"]
$_SESSION["loggedIn"];
$_SESSION['username'];
$_SESSION['name'];
$_SESSION['auth'];

出于调试目的,请在每页上设置
print\r($\u SESSION)
,然后查看它是否正确打印…您可以设置一个值,然后查看它是否携带跨页…

是否调用SESSION\u start()在每个脚本中?在调用之前是否有意外创建的输出?我假设您正在使用会话cookie,并且您的会话cookie传播不好。。。
session_start();
$_SESSION["loggedIn"]
$_SESSION["loggedIn"];
$_SESSION['username'];
$_SESSION['name'];
$_SESSION['auth'];