Իրականացնել նստաշրջանով նույնականացում PHP-ում
Մեր նույնականացումը պետք է աշխատի հետևյալ կերպ. օգտատերը,
ով ցանկանում է նույնականացվել կայքում, մուտք է գործում
login.php էջ, մուտքագրում է ճիշտ
մուտքանուն և գաղտնաբառ ու այնուհետև արդեն նույնականացված
լինելով շրջում է կայքի էջերով:
Որպեսզի կայքի այլ էջերը իմանան, որ մեր օգտատերը նույնականացված է, մենք պետք է նստաշրջանում պահենք դրա մասին նշում:
Մինչև հիմա մեր նույնականացումը լիովին աշխատող չէ, քանի որ մենք դեռ չենք միացրել նստաշրջանը, և կայքի այլ էջերը չեն կարող հասկանալ, արդյոք օգտատերը նույնականացված է, թե ոչ:
Նույնականացման նշումը կպահենք նստաշրջանի $_SESSION['auth'] փոփոխականում -
եթե այնտեղ
գրված է true, ապա օգտատերը նույնականացված է,
իսկ եթե null - ապա ոչ:
Եկեք համապատասխան փոփոխություն մտցնենք մեր կոդում.
<?php
session_start();
if (!empty($_POST['password']) and !empty($_POST['login'])) {
$login = $_POST['login'];
$password = $_POST['password'];
$query = "SELECT * FROM users WHERE login='$login' AND password='$password'";
$res = mysqli_query($link, $query);
$user = mysqli_fetch_assoc($res);
if (!empty($user)) {
$_SESSION['auth'] = true;
} else {
// սխալ է մուտքագրել մուտքանուն կամ գաղտնաբառ
}
}
?>
Այժմ կայքի ցանկացած էջում մենք կարող ենք ստուգել, արդյոք օգտատերը նույնականացված է, թե ոչ, ահա այս կերպ.
<?php
if (!empty($_SESSION['auth'])) {
}
?>
Կարելի է ամբողջությամբ փակել որևէ էջի տեքստը ոչ նույնականացված օգտատերի համար.
<?php if (!empty($_SESSION['auth'])): ?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>տեքստ միայն նույնականացված օգտատերի համար</p>
</body>
</html>
<?php else: ?>
<p>խնդրում ենք, նույնականացվեք</p>
<?php endif; ?>
Կարելի է փակել միայն էջի մի մասը.
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>տեքստ ցանկացած օգտատերի համար</p>
<?php
if (!empty($_SESSION['auth'])) {
echo 'տեքստ միայն նույնականացված օգտատերի համար';
}
?>
<p>տեքստ ցանկացած օգտատերի համար</p>
</body>
</html>
Ենթադրենք, մեր կայքում, բացի login.php էջից,
կան նաև 1.php, 2.php
և 3.php էջերը: Ապահովեք, որ այդ
էջերին մուտք գործել կարողանա միայն նույնականացված
օգտատերը:
Ենթադրենք, մեր կայքում կա նաև
index.php էջ: Ապահովեք, որ այդ էջի մի մասը
բաց լինի բոլոր օգտատերերի համար,
իսկ մյուս մասը` միայն նույնականացվածների համար:
Փոփոխեք ձեր կոդն այնպես, որ հաջող նույնականացման դեպքում նստաշրջանում գրանցվի նաև օգտատիրոջ մուտքանունը:
Ապահովեք, որ կայքի ցանկացած էջ այցելելիս, նույնականացված օգտատերը տեսնի իր մուտքանունը, իսկ ոչ նույնականացվածը` նույնականացման էջի հղում: