2012-10-03 77 views
2

我對這個東西很陌生,但這是我的登錄授權頁面。PHP登錄系統 - 我做對了嗎?

function encrypt($password, $salt) { 
    return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($salt), $password, MCRYPT_MODE_CBC, md5(md5($salt)))); 
} 

$query = "SELECT * FROM users WHERE LOWER(`username`) = :user"; 
$stmt = $dbh->prepare($query); 
$stmt->bindValue(':user', strtolower($_POST['username'])); 
$stmt->execute(); 

if ($stmt->rowCount() == 1) { 
    $row = $stmt->fetch(PDO::FETCH_ASSOC); 
    if (encrypt($_POST['password'], $row['salt']) == $row['password']) { 
     echo "Logged in!"; 
    } 
} 

在我的數據庫,我有列usernamepasswordsalt。密碼列包含加密的密碼。

我的工作流程在這裏正確嗎?

+0

爲什麼base64_encode在哈希上? – Zaffy

+1

@ Zaffy http://stackoverflow.com/questions/1289061/best-way-to-use-php-to-encrypt-and-decrypt – Norse

+3

你不應該加密密碼,但散列它們。加密是可逆的,哈希(至少在理論上)不是。 – NullUserException

回答