我创建的登录系统最初很好地记录了用户,用户被重定向到预期的索引。但是,当用户单击导航链接以导航到另一个页面(受限制)时,用户将被重定向到登录页面。当他们第二次登录时,每个页面都可以正常访问。
我尝试打印出会话 ID 并转储了会话数组。我注意到,当用户首先进入页面登录时,他们的会话 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();
if(isset($_SESSION["loggedIn"])){
echo '<div align="right" id="user">Welcome '.trim($_SESSION['name']).'! <a href="../resources/php/logout.php">Sign Out</a> | <a href="../resources/php/editAccount.php">Edit Account</a></div>';
}else{
header("Location: login.php");
}