-2
我已經編寫了一個簡單的登錄腳本,但是它不匹配用數據庫輸入從表單中檢索的用戶名和密碼。登錄腳本無法正常工作,無法匹配用戶名和密碼
下面是代碼:
<?php
// Include database connection settings
include $_SERVER["DOCUMENT_ROOT"] . 'system/db/DbConnection.php';
// Inialize session
session_start();
// Retrieve POST variables from login form
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
// Retrieve username and password from database according to user's input
$qLogin = mysql_query("SELECT * FROM users WHERE username = '{$username}'") or die("MySQL ERROR: ".mysql_error());
$rLogin = mysql_fetch_array($qLogin);
echo '1<BR />';
echo $password . '<BR />';
echo $rLogin['password'] . '<BR />';
echo '2<BR />';
echo $username . '<BR />';
echo $rLogin['username'] .'<BR />';
echo '3<BR />';
// Check username and password match
if ($username == $rLogin['username'] && $password == $rLogin['password']) {
echo '4<BR />';
// If last_login and login_ip == "", its the users first time loging in
if($rLogin['last_login'] == "" && $rLogin['login_ip'] == ""){
echo '5<BR />';
// The date right now
$date = date("d/m/y H:i:s");
// Get user IP
$ip = $_SERVER['REMOTE_ADDR'];
// Update last_login and login_ip
echo '6<BR />';
mysql_query("UPDATE users SET last_login = '{$date}', login_ip = '{$ip}' WHERE username = '{$username}'") or die("MySQL ERROR: ".mysql_error());
}
// Set session variables
$_SESSION['username'] = $username;
$_SESSION['auth'] = $rLogin['auth'];
//header("Location: ../success/");
//exit();
echo '7<BR />';
} else {
// Jump to login page
//header("Location: ../");
//exit();
echo '8<BR />';
}
?>
我得到如下回應:1,2,3和8。我也感到我已經包含回聲的用戶名和密碼,以及他們所有的比賽..
PS:沒有必要評論不安全的密碼,密碼是高度加密的,密碼是相等的,當我回聲他們,所以這也不是問題。
你的密碼是如何存儲在數據庫中的? MD5還是別的? –
你的問題太侷限了:爲你調試你的腳本不會給未來的SO用戶帶來任何好處,而且「我的腳本不能工作」不是一個可以給出權威答案的問題。 – lanzz
我使用crypt函數,所以它不是MD5,但它們匹配得很好。我看不出匹配有什麼問題,這就是爲什麼我問,因爲我可能錯過了一些非常基本的東西。 :-) – PureDarkness