我一直在搞乱 PHP 中的密码加密,起初我使用 MD5 函数将密码保存在数据库中,但我在登录时遇到了麻烦。然后我尝试了哈希函数,但我再次无法登录。
我尝试这样做的方法是在创建帐户时对密码进行加密,然后每次有人登录时,密码都会使用相同的方法再次加密,然后检查数据库以查看加密的密码是否匹配. 我可以很好地创建一个帐户,似乎每当我使用相同的密码创建一个帐户时,哈希值都是相同的,所以我假设它们每次都不会改变(我对加密和哈希值知之甚少)。
这是我当前的新用户创建片段:
<?php
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "NewUser")) {
$insertSQL = sprintf("INSERT INTO users (username, password, name) VALUES (%s, %s, %s)",
GetSQLValueString($_POST['username'], "text"),
GetSQLValueString(hash("sha512",$_POST['password']), "text"),
GetSQLValueString($_POST['name'], "text"));
mysql_select_db($database_ReallyGoodPieConnection, $ReallyGoodPieConnection);
$Result1 = mysql_query($insertSQL, $ReallyGoodPieConnection) or die(mysql_error());
?>
这是我的登录片段:
if (isset($_POST['username'])) {
$loginUsername=$_POST['username'];
$password=$_POST['password'];
$password = hash("sha512", $password);
print $password;
$MM_fldUserAuthorization = "permissions";
$MM_redirectLoginSuccess = "index.php";
$MM_redirectLoginFailed = "login.php";
$MM_redirecttoReferrer = true;
mysql_select_db($database_ReallyGoodPieConnection, $ReallyGoodPieConnection);
$LoginRS__query=sprintf("SELECT username, password FROM users WHERE username=%s AND password=%s",
GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text")
谁能帮我理解为什么实际登录失败。我使用完全相同的密码进行创建和登录(显然)并使用相同的加密方法。这真的让我很困惑。