我想創建一個簡單的登錄憑證檢查器(使用會話變量)。PHP檢查密碼腳本不會爲多個用戶工作
這是我到目前爲止有:
<?php
include("dbconnect.php");
$u_name = mysql_real_escape_string($_POST['uname']);
$p_word = mysql_real_escape_string($_POST['pword']);
# *** querying all records ***
$query = mysql_query("SELECT valid_username, valid_password FROM notes_users");
while($rst = mysql_fetch_array($query)) {
//echo $rst[valid_username] . ", ";
//echo $u_name . " || ";
//echo ($rst[valid_username] == $u_name) . " || ";
//echo $rst[valid_password] . ", ";
//echo $p_word . " || ";
//echo ($rst[valid_password] == $p_word) . " || ";
//echo (($rst[valid_username] == $u_name) AND ($rst[valid_password] == $p_word));
//echo "<br/>";
if (($rst[valid_username] == $u_name) AND ($rst[valid_password] == $p_word)) {
session_start();
$_SESSION['login'] = "1";
header('Location: main.php') ;
} else {
session_start();
$_SESSION['login'] = '';
header('Location: badlogin.php') ;
}
}
?>
這裏的問題:如果MySQL表中有一個以上的用戶在它的列表中,檢查中斷。只有表中最後輸入的用戶已授予訪問權限。輸入的最後一位用戶之上的任何人都會被碰到不正確的登錄屏幕 - 即使憑據正確。爲什麼發生這種情況?任何人都可以提出一個代碼修復或更好的代碼來實現這個登錄檢查?
編輯:評論代碼測試以查看提供的憑據是否與記錄中的憑據相匹配。該腳本的那部分工作正常。
問題解決了!謝謝你們。對於將來看到這個的任何人,絕對要加密你的密碼,我的是純文本,因爲這是一個本地測試應用程序,甚至不會看到上傳到網絡。
不要將密碼存放在純文本。 – SLaks 2012-04-22 02:42:52
使用用戶名進行查詢。數據庫就是爲這種事情而精確優化的 - 使用它! – lynks 2012-04-22 02:45:23