我一直在學習PHP和MySQL一段時間,並且遇到了一個問題。 我已經創建了一個用戶數據庫(MySQL),登錄表單和頁面,在成功登錄後,您將被鎖定爲重定向。重定向後會話變量丟失(使用標頭)
登錄頁面
<?php
require_once 'login.php'; //connecting to db
$db_server = mysql_connect($db_hostname, $db_username, $db_password);
if (!$db_server) die("Unable to connect to MySQL: " . mysql_error());
mysql_select_db($db_database)
or die("Unable to select database: " . mysql_error());
session_start(); //
if (isset($_POST['username']) &&
isset($_POST['password']))
{
$username = $_POST["username"];
$password = $_POST["password"];
$salt1 = "qm&h*";
$salt2 = "[email protected]";
$query = "SELECT * FROM login WHERE username='$username'";
$result = mysql_query($query);
if (mysql_num_rows($result) == 0) die("Wrong username or password.");
elseif (mysql_num_rows($result))
{
$row = mysql_fetch_row($result);
$crypt_login_pass = md5("$salt1$password$salt2");
if ($crypt_login_pass == $row[2])
{
$_SESSION['username'] = $username;
$_SESSION['password'] = $crypt_pass;
header("Location: index_account.php");
exit;
}
else {
die("Wrong username or password.");
}
}
}
?>
代碼完美運行,直到我說了header("Location: index_account.php")
。我曾經在那裏只有die("You are now logged in.")
。 這裏是你supposted重定向到的頁面:
<?php
session_start();
if (isset($_SESSION['username']) &&
isset($_SESSION['password']))
{
$username = $_SESSION['username'];
$password = $_SESSION['password'];
echo "Your username is '$username'
and your crypted password is '$password'.";
}
else echo "Please <a href=index.php>click here</a> to log in.";
?>
所有這些代碼是在本地主機上運行。 問題是,$ _SESSION ['username']和$ _SESSION ['password']不會傳輸到第二頁(index_account.php)。我讀過很多帖子,而且我發現的最類似的是:Session variables lost after header redirect,但沒有安裝。 請注意,這是我的第一個編程語言(不包括HTML和CSS),我對此仍然很陌生。
P.S.對不起我的英語。這不是我的母語。
在此先感謝!
[**請不要在新代碼**中使用'mysql_ *'函數](http://bit.ly/phpmsql)。它們不再被維護,[已正式棄用](http://j.mp/XqV7Lp),並且可能[在直播代碼中危險](http://bit.ly/4zUdtT)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 – Jimbo