Ahoj,
prosím o radu, nevíte proč se mi po změně hesla nedaří přihlásit pod novým heslem ?
Samozřejmě nejde ani to nové heslo zadat a změnit, musim dávat stále to první.
changepassword.php
<?php
$formValid = new Security;
if(isset($_POST['changepass'])) {
$username = $_SESSION['username'];
$oldPassword = $formValid->validForm($_POST['oldpassword']);
$newPassword = $formValid->validForm($_POST['newpassword']);
$confirmPassword = $formValid->validForm($_POST['confirmnewpassword']);
$checkPassword = User::passwordVerify($username,$oldPassword);
if($checkPassword) {
if($confirmPassword == $newPassword) {
$changePassword = User::changePassword($username,$oldPassword,$newPassword);
if($changePassword) {
echo "<br /><center>Změna hesla proběhla úspěšně</center><br />";
}
} else {
echo "<br /><center>Potvrzovací heslo se neshoduje s novým.</center><br />";
}
} else {
echo "<br /><center>Staré heslo se neshoduje.</center><br />";
}
}
?>
<?php if(isset($_SESSION['username'])) { ?>
<form name="changepassword" method="post" action="">
<input type="password" name="oldpassword" class="input-original" placeholder="Staré heslo" />
<input type="password" name="newpassword" class="input-original" placeholder="Nové heslo" />
<input type="password" name="confirmnewpassword" class="input-original" placeholder="Potvrdit nové heslo"/>
<button class="btn" type="submit" name="changepass">Změnit heslo</button>
</form>
<?php } else {
echo "Uživatel není přihlášen";
}
?>
User.php
public static function passwordVerify($username,$password){
$query = Database::run("SELECT * FROM users WHERE username = '".$username."'");
$result = mysqli_fetch_array($query);
if(password_verify($password, $result['password'])) {
return TRUE;
} else {
return FALSE;
}
}
public static function changePassword($username,$newPassword) {
$hashed_password = self::hash($newPassword, ['cost' => 12]);
$hash = Database::run("UPDATE users SET password = '".$hashed_password."' WHERE username = '".$username."'");
return $hash;
}
Díky moc za rady.