2011-05-13 72 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帮助。