Արտոնագրում աղ ավելացնելը
Այժմ մեզ անհրաժեշտ է փոխել արտոնագրումը: Այստեղ փոփոխություններն արդեն ավելի էական կլինեն:
Այլևս հնարավոր չի լինի միանգամից մեկ հարցումով ստուգել մուտքանուն-գաղտնաբառ զույգի ճիշտ լինելը: Ինչու՞: Որովհետև գաղտնաբառը ստուգելու համար անհրաժեշտ է ստանալ դրա աղով հեշը, իսկ աղը պահվում է տվյալների բազայում և յուրաքանչյուր մուտքանունի համար եզակի է:
Ստիպված կլինենք սկզբում ստանալ գրառումը միայն մուտքանունով, կարդալ աղը, ավելացնել աղը մուտքագրված գաղտնաբառին և համեմատել բազայից ստացված աղով գաղտնաբառի հետ, և միայն, եթե դրանք համընկնում են, արտոնագրել օգտատիրոջը:
Հաշվի առեք, որ կարող է լինել, որ մուտքանունը մուտքագրված է սխալ, այս դեպքում գաղտնաբառի ստուգում կարող է չիրականացվել, և անմիջապես ցուցադրվել, որ արտոնագրումը հնարավոր չէ. տվյալները ճիշտ չեն.
<?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 {
// նման մուտքանունով օգտատեր գոյություն չունի, ցուցադրենք հաղորդագրություն
}
?>
Անվտանգության նկատառումներից ելնելով օգտատիրոջը սովորաբար չեն տեղեկացնում, թե կոնկրետ ինչը չի համապատասխանել՝ մուտքանունը թե գաղտնաբառը, որպեսզի դժվարացնեն մուտքանուն-գաղտնաբառ զույգերի ընտրությունը հաքերների կողմից: Պարզապես ցուցադրում են հաղորդագրություն, որ մուտքանուն-գաղտնաբառ զույգը սխալ է կամ նման
Իրականացրեք վերը նկարագրված արտոնագրումը աղով գաղտնաբառով: Փորձեք գրանցվել, մուտք գործել համակարգ, համոզվեք, որ ամեն ինչ աշխատում է: