2012-10-03 59 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

回答