მარილის დამატება ავტორიზაციაში
ახლა ჩვენ უნდა შევცვალოთ ავტორიზაცია. აქ ცვლილებები უფრო მნიშვნელოვანი იქნება.
აღარ იქნება შესაძლებელი შევამოწმოთ ლოგინი-პაროლის წყვილის სისწორე დაუყოვნებლივ, ერთი მოთხოვნით. რატომ: იმიტომ, რომ პაროლის შესამოწმებლად საჭიროა მისი მარილით დაცული ჰეშის მიღება, ხოლო მარილი ინახება მონაცემთა ბაზაში და უნიკალურია თითოეული ლოგინისთვის.
თავდაპირველად მოგვიწევს ჩანაწერის მიღება მხოლოდ ლოგინის მიხედვით, წავიკითხოთ მარილი, დავამარილოთ შეყვანილი პაროლი და შევადაროთ ბაზიდან მიღებულ მარილის პაროლს და მხოლოდ, თუ ისინი ემთხვევა, - ავტორიზაცია გავუკეთოთ მომხმარებელს.
გაითვალისწინეთ, რომ შესაძლებელია ისეთი შემთხვევა, როდესაც ლოგინი არასწორადაა შეყვანილი, ამ შემთხვევაში პაროლის შემოწმება შეუძლებელია, და დაუყოვნებლივ უნდა ვაჩვენოთ, რომ ავტორიზაცია შეუძლებელია - მონაცემები არასწორია:
<?php
$login = $_POST['login'];
$query = "SELECT * FROM users WHERE login='$login'";
$res = mysqli_query($link, $query);
$user = mysqli_fetch_assoc($res);
if (!empty($user)) {
// მომხმარებელი ამ ლოგინით არსებობს, ახლა საჭიროა პაროლის შემოწმება...
} else {
// მომხმარებელი ამ ლოგინით არ არსებობს, ვაჩვენოთ შეტყობინება
}
?>
დავამატოთ პაროლის შემოწმება:
<?php
$login = $_POST['login'];
$query = "SELECT * FROM users WHERE login='$login'";
$res = mysqli_query($link, $query);
$user = mysqli_fetch_assoc($res);
if (!empty($user)) {
$salt = $user['salt']; // მარილი ბაზიდან
$hash = $user['password']; // მარილის პაროლი ბაზიდან
$password = md5($salt . $_POST['password']); // მარილის პაროლი მომხმარებლისგან
// ვადარებთ მარილის ჰეშებს
if ($password == $hash) {
// ყველაფერი კარგადაა, ვახდენთ ავტორიზაციას...
} else {
// პაროლი არ ემთხვევა, ვაჩვენოთ შეტყობინება
}
} else {
// მომხმარებელი ამ ლოგინით არ არსებობს, ვაჩვენოთ შეტყობინება
}
?>
უსაფრთხოების მიზნით, მომხმარებელს, როგორც წესი, არ ეუბნებიან, თუ რა ზუსტად არ ემთხვევა - ლოგინი თუ პაროლი, რათა გართულდეს ლოგინი-პაროლის წყვილის შერჩევა ჰაკერების მიერ. უბრალოდ აჩვენებენ შეტყობინებას იმის შესახებ, რომ ლოგინი-პაროლის წყვილი არასწორია ან რამე ამგვარი.
განახორციელეთ ზემოთ აღწერილი ავტორიზაცია მარილის პაროლით. სცადეთ დარეგისტრირდეთ, გაიარეთ ავტორიზაცია, დაარწმუნეთ თავი, რომ ყველაფერი მუშაობს.