Գաղտնաբառի փոփոխում 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 {
// հին գաղտնաբառը սխալ է մուտքագրվել, ցույց կտանք հաղորդագրություն
}
?>
Իրականացրեք նկարագրված գաղտնաբառի փոփոխումը: