2013-05-09 59 views
0

有人可以給我電話mybb使用什麼方法來加密數據庫中的密碼? ,因爲我有這個代碼每次我使用用戶和密碼(正確的用戶和通行證)的問題,我有錯誤:「不正確的用戶和密碼」在mybb數據庫中加密密碼的方法

我給你3我的代碼,我需要幫助我覺得我有類問題登錄):

謝謝你的幫助。

class DB 
{ 
    var $connection; 
    var $started; 

    function start() 
    { 
     global $MySQL_Host, $MySQL_User, $MySQL_Pass, $MySQL_DB; 

     $this->connection = mysql_connect($MySQL_Host, $MySQL_User,  $MySQL_Pass); 
     mysql_select_db($MySQL_DB, $this->connection); 
    } 

    function query($query) 
    { 
     $result = mysql_query($query, $this->connection); 

     if($result) 
     { 
      return mysql_fetch_full_result_array($result); 
     } 
     else 
     { 
      return $result; 
     } 
    } 

    function end() 
    { 
     mysql_close($this->connection); 
    } 

    function isStarted() 
    { 
     return $started; 
    } 
} 

function mysql_fetch_full_result_array($result) 
{ 
    $table_result = array(); 
    $r = 0; 

    if($result === true) 
    { 
     return $result; 
    } 

    if(mysql_num_rows($result) == 0) 
    { 
     return $result; 
    } 

    while($row = mysql_fetch_assoc($result)) 
    { 
     $arr_row = array(); 
     $c = 0; 

     while ($c < mysql_num_fields($result)) 
     {  
      $col = mysql_fetch_field($result, $c); 
      $arr_row[ $col -> name ] = $row[ $col -> name ];   
      $c++; 
     } 

     $table_result[ $r ] = $arr_row; 
     $r++; 
    } 

    return $table_result; 
} 


class Login 
{ 

    function CheckLogin($username, $password) 
    { 
     $db = new DB(); 
     $db->start(); 

     $query = "SELECT uid, password, email FROM mybb_users WHERE username='".$username."' AND password='".md5(md5($salt).md5($password))."';"; 

     $result = $db->query($query); 

     $db->end(); 

     if($result == false) 
      return false; 
//    fwrite($fh, $result); 
//    fclose($fh); 


     if(md5(md5($salt).md5($password)) == $result[ 0 ][ 'password' ]) 
     { 
      return array('uid' => $result[ 0 ][ 'uid' ], 
          'mail' => $result[ 0 ][ 'email' ], 
          'user' => $username 
         ); 
     } 
    } 
} 
+0

'MD5(MD5($鹽).md5($密碼))'任何地方聲明。你能告訴我們代碼在哪裏哈希值?另外,你不應該使用'MD5'。相反,看看'SHA1'。 – christopher 2013-05-09 06:59:33

+0

@Chris SHA1對於密碼散列的破壞程度只比MD5小得多。使用一種*昂貴的哈希像河豚!使用https://github.com/ircmaxell/password_compat/ – deceze 2013-05-09 07:05:33

回答

1

查詢使用$salt,但我沒有看到它在代碼

$query = "SELECT uid, password, email FROM mybb_users WHERE username='".$username."' AND password='".md5(md5($salt).md5($password))."';"; 
+0

$查詢=「選擇用戶名,密碼,電子郵件,鹽從mybb_users WHERE用戶名='」。$ username。「'AND password ='」。md5(md5($鹽).md5($密碼))。 「」;「;也是同樣的錯誤! – user1973003 2013-05-09 07:08:39

+0

請求我需要更多幫助。謝謝 – user1973003 2013-05-09 07:15:06

+0

:請人幫助我:| :| – user1973003 2013-05-09 11:54:41