我在更改登錄密碼時遇到了麻煩。我使用散列和鹽作爲我的密碼。我不能在phpmyadmin上更改它,因爲它是散列類型的字符。這裏是我的使用電子郵件地址更改散列(加密密碼)的更好方法
create_acc.php
<?php
include_once('config.php');
$email = $_POST['e-mail'];
$pass = $_POST['pass'];
$hash = hash('sha256',$pass);
function createSalt(){
$text = md5(uniqid(rand(), true));
return substr($text,0,3);
}
$salt = createSalt();
$pass = hash('sha256',$salt.$hash);
$email = $mysqli->real_escape_string($email); //$mysqli is located at my config.php
$query = $mysqli->query("INSERT INTO `login`(`email`,`pass`,`salt`) VALUES('$email','$pass','$salt')");
$mysqli->close();
header('location: login.html');
?>
任何想法如何,我可以創造一個更改密碼或忘記密碼,就像在現代登錄系統現在。每當您忘記密碼或想要更改密碼時,服務器都會在您的電子郵件中發送關於更改加密密碼的鏈接?
停止使用自制散列,並開始使用PHP的內置password_hash()/ password_verify() –
停止將用戶輸入直接注入到SQL語句中,並開始使用預準備語句/綁定變量 –