Промена на лозинка во PHP
Промената на лозинката не може едноставно да се направи во личниот профил. Работата е во тоа што корисникот може да го остави својот компјутер без надзор (на пример, во канцеларија), додека е автентициран на нашата веб-страница. Во овој случај, ако се дозволи едноставно промена на лозинката, тогаш злонамерник-недоброжелател ќе може да ја смени лозинката со друга, што, се разбира, е многу лошо.
Неопходно е да се направи така што промената на лозинката со нова да бара внесување на старата лозинка.
Ајде да ја имплементираме страницата changePassword.php,
при што корисникот ќе види форма
со два инпути - во првиот ќе треба да ја
внесе својата стара лозинка, а во вториот - новата:
<form action="" method="POST">
<input name="old_password">
<input name="new_password">
<input type="submit" name="submit">
</form>
При кликнување на копчето за испраќање треба да го направиме следново:
<?php
$id = $_SESSION['id']; // id на корисникот од сесијата
$query = "SELECT * FROM users WHERE id='$id'";
$res = mysqli_query($link, $query);
$user = mysqli_fetch_assoc($res);
$hash = $user['password']; // солена лозинка од базата на податоци
$oldPassword = $_POST['old_password'];
$newPassword = $_POST['new_password'];
// Проверуваме кореспонденција на хашот од базата со внесената стара лозинка
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 {
// старата лозинка е погрешно внесена, ќе испечатиме порака
}
?>
Имплементирајте ја опишаната промена на лозинка.