Wissel van Wagwoord op PHP
Die verandering van 'n wagwoord kan nie eenvoudig in die persoonlike rekening gedoen word nie. Die saak is dat die gebruiker kan sy rekenaar sonder toesig laat (byvoorbeeld, in die kantoor), terwyl hy op ons webwerf gemagtig is. In hierdie geval, as 'n mens eenvoudig toelaat om die wagwoord te verander, dan sal 'n kwaadwillige-onvriendelike persoon die wagwoord na 'n ander een kan verander, wat, natuurlik baie sleg is.
Dit is nodig om te maak dat die verandering van die wagwoord na 'n nuwe een die invoer van die ou wagwoord vereis.
Kom ons implementeer die bladsy changePassword.php,
waarop die gebruiker, wanneer hy dit besoek, 'n vorm sal sien
met twee invoervelde - in die eerste een sal hy moet
sy ou wagwoord invoer, en in die tweede een - die nuwe een:
<form action="" method="POST">
<input name="old_password">
<input name="new_password">
<input type="submit" name="submit">
</form>
Met die druk op die indienknoppie moet ons die volgende doen:
<?php
$id = $_SESSION['id']; // id van die gebruiker uit die sessie
$query = "SELECT * FROM users WHERE id='$id'";
$res = mysqli_query($link, $query);
$user = mysqli_fetch_assoc($res);
$hash = $user['password']; // gesoute wagwoord uit die databasis
$oldPassword = $_POST['old_password'];
$newPassword = $_POST['new_password'];
// Kontroleer die ooreenstemming van die hash uit die databasis met die ingevoerde ou wagwoord
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 {
// die ou wagwoord is verkeerd ingevoer, wys 'n boodskap
}
?>
Implementeer die beskryfde wagwoordverandering.