Արտոնագրում աղ ավելացնելը

Այժմ մեզ անհրաժեշտ է փոխել արտոնագրումը: Այստեղ փոփոխություններն արդեն ավելի էական կլինեն:

Այլևս հնարավոր չի լինի միանգամից մեկ հարցումով ստուգել մուտքանուն-գաղտնաբառ զույգի ճիշտ լինելը: Ինչու՞: Որովհետև գաղտնաբառը ստուգելու համար անհրաժեշտ է ստանալ դրա աղով հեշը, իսկ աղը պահվում է տվյալների բազայում և յուրաքանչյուր մուտքանունի համար եզակի է:

Ստիպված կլինենք սկզբում ստանալ գրառումը միայն մուտքանունով, կարդալ աղը, ավելացնել աղը մուտքագրված գաղտնաբառին և համեմատել բազայից ստացված աղով գաղտնաբառի հետ, և միայն, եթե դրանք համընկնում են, արտոնագրել օգտատիրոջը:

Հաշվի առեք, որ կարող է լինել, որ մուտքանունը մուտքագրված է սխալ, այս դեպքում գաղտնաբառի ստուգում կարող է չիրականացվել, և անմիջապես ցուցադրվել, որ արտոնագրումը հնարավոր չէ. տվյալները ճիշտ չեն.

html<?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 {
    // նման մուտքանունով օգտատեր գոյություն չունի, ցուցադրենք հաղորդագրություն
  }
?>

Ավելացնենք գաղտնաբառի ստուգումը.

html<?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 {
    // նման մուտքանունով օգտատեր գոյություն չունի, ցուցադրենք հաղորդագրություն
  }
?>

Անվտանգության նկատառումներից ելնելով օգտատիրոջը սովորաբար չեն տեղեկացնում, թե կոնկրետ ինչը չի համապատասխանել՝ մուտքանունը թե գաղտնաբառը, որպեսզի դժվարացնեն մուտքանուն-գաղտնաբառ զույգերի ընտրությունը հաքերների կողմից: Պարզապես ցուցադրում են հաղորդագրություն, որ մուտքանուն-գաղտնաբառ զույգը սխալ է կամ նման

Задание 1

Իրականացրեք վերը նկարագրված արտոնագրումը աղով գաղտնաբառով: Փորձեք գրանցվել, մուտք գործել համակարգ, համոզվեք, որ ամեն ինչ աշխատում է: