Skift adgangskode på PHP
Man kan ikke bare skifte adgangskode i den personlige konto. Sagens kerne er, at brugeren måske efterlader sin computer uden opsyn (for eksempel på kontoret), mens de er logget ind på vores hjemmeside. I dette tilfælde, hvis man tillader blot at ændre adgangskoden, så vil en ondsindet person kunne ændre adgangskoden til en anden, hvilket selvfølgelig er meget dårligt.
Det er nødvendigt at gøre det sådan, at ændring af adgangskoden til en ny kræver indtastning af den gamle adgangskode.
Lad os implementere siden changePassword.php,
hvor brugeren, når de besøger den, vil se en formular
med to inputfelter - i den første skal de
indtaste deres gamle adgangskode, og i den anden - den nye:
<form action="" method="POST">
<input name="old_password">
<input name="new_password">
<input type="submit" name="submit">
</form>
Ved tryk på afsendelsesknappen skal vi gøre følgende:
<?php
$id = $_SESSION['id']; // brugerens id fra sessionen
$query = "SELECT * FROM users WHERE id='$id'";
$res = mysqli_query($link, $query);
$user = mysqli_fetch_assoc($res);
$hash = $user['password']; // salted adgangskode fra databasen
$oldPassword = $_POST['old_password'];
$newPassword = $_POST['new_password'];
// Tjekker om hash fra databasen matcher den indtastede gamle adgangskode
if (password_verify($oldPassword, $hash)) {
$newPasswordHash = password_hash($newPassword, PASSWORD_DEFAULT);
$query = "UPDATE users SET password='$newPasswordHash' WHERE id='$id'";
mysqli_query($link, $query);
} else {
// den gamle adgangskode blev indtastet forkert, vis en besked
}
?>
Implementer den beskrevne adgangskodeændring.