2011-05-13 75 views
0
if(isset($_POST['login'])) { 
$username = mysql_real_escape_string($_POST['username']); 
$password = mysql_real_escape_string($_POST['password']); 
if(empty($username) || empty($password)) { 
$error = 1; 
$error_message = 'Please fill in all the required fields.'; 
} else { 
    get_login_name($username, $password); 
    //The commented line works... 
    //$query = mysql_query("SELECT /* user_logged true, page login */username, password FROM members WHERE username = '".$username."' AND password = '".sha1($password)."' LIMIT 1"); 
} 
if(mysql_num_rows(get_login_name($username, $password)) == 0) { 
    echo get_login_name($username, $password); 
$error = 1; 
$error_message = 'Incorrect username or password.'; 
} elseif ($error == 0) { 
//Other stuff.... 
} 
} 

功能:PHP用戶登錄ANF功能

function get_login_name($password, $username) { 
       global $myDB; 
       global $config; 
       $query = "SELECT /* page == login, functions.php */username, password FROM members WHERE username = '".$username."' AND password = '".sha1($password)."' LIMIT 1"; 
       $result = $myDB->Execute($query) or die(GetDbError($myDB->ErrorMsg())); 
       return $result; 
} 

如何正確檢查,如果用戶名或密碼不正確的? (部分,如果(mysql_num_rows(G .....) 在我看來事情錯了,我已經做了紅外功能get_login_name,返回和檢查順便提一下,利用ADODB

編輯:。 畢竟我決定有點測試它,所以,讓我們現在就離開的功能,因爲它讓我們檢查用戶名和密碼的一部分:

if (!is_null(get_login_name($password, $username))) { 
    echo get_login_name($password, $username); 
$error = 1; 
$error_message = 'Incorrect username or password.'; 
} 

如果用戶名或密碼不正確IR給我: 用戶名,密碼這意味着結果並沒有發現在所有(沒有用戶,如果用戶正確給出相同的結果)

好吧,讓我們輸入有效的用戶和傳球,並gaves: 用戶名,密碼爲零,0a706ce75f3bc195c8ed7be5a21d3766abb0d384

有什麼不對?

+0

請填寫您的密碼。 :-) – 2011-05-13 19:09:01

+0

我認爲你需要檢查>而不是==。 – makyol 2011-05-13 19:19:26

回答

0

本質上講,如果get_login_name有回報,這意味着該查詢返回的匹配usernamepassword這意味着該組合是正確的,否則,沒有結果意味着沒有比賽,所以你可以說,無論是用戶名或密碼不正確(因爲他們不存在或其中一個是錯誤的)。如果$Result具有使用get_login_name很可能是隻是一個值:

if (!is_null(get_login_name($password, $username))) 
    // correct 
else 
    // incorrect 

玩它,並查看結果。

0

ECH,經過測試管理它的工作:) 這似乎是這部分失敗:/

if (!is_null(get_login_name($password, $username))) 

所以,孔代碼:

if (!$myDB->Affected_Rows()) { 
//if(mysql_num_rows($query) == 0) { 
$error = 1; 
$error_message = 'Incorrect username or password.'; 
} 

我有什麼?只是將其更改爲:

if (!$myDB->Affected_Rows()) { 

謝謝大家誰tryed幫助。