我創建的登錄系統最初將用戶記錄爲罰款,用戶將按照預期重定向到索引。但是,當用戶點擊導航鏈接導航到另一個頁面(受限制)時,用戶將被重定向到登錄頁面。當他們再次登錄時,每個頁面都可以正常訪問。PHP登錄腳本需要用戶登錄兩次
我試着打印出會話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();
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");
}
你調用session_start( )在*每個*腳本?在通話之前是否有任何意外產生的輸出?我假設你正在使用會話cookie,你的會話cookie傳播不好...... – Bernim 2013-06-12 10:24:41