最近我創建了一個處理我的遊戲的登錄和註冊的腳本,它使用http_get方法更新統計信息。我已經成功地創造了一切,但有一個問題。當用戶註冊時,它會插入不同的php腳本生成的md5字符串,因此我無法比較密碼。在SQL數據庫和PHP腳本中作用不同的MD5
這是我插入的MD5字符串轉換成數據庫的方式:
$pw = md5($password);
$insert = mysqli_query($connect, "INSERT INTO Accounts (username, password, email,reg_ip, wins, looses, experience) VALUES ('$username', '$pw', '$email', '$reg_ip', '0','0', '0')");
if($insert) {
echo "account successfully created";
}
else {
echo "error";
}
這是我檢查密碼方式:
if($p['password'] == md5($password)) {
echo "login was successful!";
}
else {
echo "incorrect password";
}
這是MD5字符串,它是在數據庫當用戶註冊時:(未加密的字符串是:pocakaj123)
54e8850ba5eca655854ddf1b503943
這是生成的字符串當我回聲MD5($密碼)。
54e8850ba5eca655854ddf1b50394348
在此先感謝,所有的答案都非常感謝!
爲什麼其中一個只有30個字符? MD5的十六進制是32個字符。 –
你不應該使用'md5'來存儲你的密碼,所以這個問題是無關緊要的。 –
請參閱:[如何安全存儲用戶的密碼](https://paragonie.com/blog/2016/02/how-safely-store-password-in-2016)。 –