Bir kullanıcının bir parolası (bu örnekte parola1) varsa ve parola2 olarak değiştirirse, hashing aynı sonucu döndürür. Bunu şu şekilde test edebilirsiniz: OLD LINK Parolanızı 1 geçerli parola olarak ve parolayı2 yeni parola olarak yazın ve parolayı onaylayın, sonuçları göreceksiniz. Tamamen benzer olmayan bir şifre girilirse sorun olmaz. Anladığım kadarıyla şifreli şifrelerle uğraşmanın başka yolları da var. Benim kod aşağıda:Crypt iki farklı (benzer) parola için aynı kareyi döndürüyor
<?php
$oldpassword="password1";
echo "<form method=\"post\">
<p>Enter Current Password: <input type=\"password\" name=\"currentpassword\" /></p>
<p>Enter New Password: <input type=\"password\" name=\"password\" /></p>
<p>Confirm New Password: <input type=\"password\" name=\"confirmpassword\" /></p>
<p><input type=\"submit\" value=\"Change Password\"></p>
</form>";
$user_id = $_SESSION['user_id'];
$pass=$_POST['password'];
$salt = 'xxxxx';
$currentpassword = crypt($_POST['currentpassword'], $salt);
$oldpassword = crypt($oldpassword, $salt);
if(isset($_POST['password'])) {
if ($currentpassword !== $oldpassword) {
echo "The password you entered for current password does not match our records.";
}
else {
if ($_POST['password'] && $_POST['confirmpassword']) {
if ($_POST['password'] == $_POST['confirmpassword']) {
$hash = crypt($pass, $salt);
if ($hash == $currentpassword) {
echo "Current Password: ";
var_dump($_POST['currentpassword']);
echo "<br/>";
echo "New Password: ";
var_dump($_POST['password']);
echo "<br/>";
echo "New Hash: ";
var_dump($hash);
echo "<br/>";
echo "Current Password Hash: ";
var_dump($currentpassword);
echo "<br/>";
echo "<hr/>";
echo "Your new password cannot be the same as your current password.";
}
else {
echo "Your password has been changed successfully<br/>";
}
} else {
echo "Your passwords do not match. Please try again.";
}
}
}
}
?>
Eğer bcrypt kullanıyorsanız, maksimum şifre uzunluğunun 55 karakter olduğunu unutmayın. Bundan daha uzun denediğiniz şifreler mi? – Mike
Bu örnekte değil. – dcclassics
Hangi crypt() algoritmasını kullanıyorsunuz? – TML