Autentifikācija caur sesiju PHP
Mūsu autentifikācijai jāstrādā šādi: lietotājs,
kurš vēlas autentificēties vietnē, iet
uz lapu login.php, ievada pareizo
lietotājvārdu un paroli un pēc tam pārvietojas pa vietnes lapām jau kā autentificēts.
Lai citas vietnes lapas zinātu, ka mūsu lietotājs ir autentificējies, mums jāuzglabā sesijā atzīme par to.
Pagaidām mūsu autentifikācija nav pilnībā darba gatava, jo sesiju mēs vēl neesam pievienojuši un citas vietnes lapas nevar saprast, vai lietotājs ir autentificējies vai nē.
Mēs glabāsim atzīmi par autentifikāciju sesijas mainīgajā
$_SESSION['auth'] - ja tur
ierakstīts true, tad lietotājs ir autentificējies,
bet ja null - tad nav autentificējies.
Ieviesīsim atbilstošas labojumus mūsu kodā:
<?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 {
// nepareizi ievadīts lietotājvārds vai parole
}
}
?>
Tagad jebkurā vietnes lapā mēs varam pārbaudīt, vai lietotājs ir autentificējies vai nē, šādā veidā:
<?php
if (!empty($_SESSION['auth'])) {
}
?>
Var aizvērt kādas lapas tekstu vispār neautentificētam lietotājam:
<?php if (!empty($_SESSION['auth'])): ?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>teksts tikai autentificētam lietotājam</p>
</body>
</html>
<?php else: ?>
<p>lūdzu, autentificējieties</p>
<?php endif; ?>
Var aizvērt tikai daļu no lapas:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>teksts jebkuram lietotājam</p>
<?php
if (!empty($_SESSION['auth'])) {
echo 'teksts tikai autentificētam lietotājam';
}
?>
<p>teksts jebkuram lietotājam</p>
</body>
</html>
Pieņemsim, ka mūsu vietnē, bez lapas login.php,
ir arī lapas 1.php, 2.php
un 3.php. Izveidojiet tā, lai pie šīm
lapām varētu piekļūt tikai autentificēts
lietotājs.
Pieņemsim, ka mūsu vietnē ir vēl lapa
index.php. Izveidojiet tā, lai daļa
šīs lapas būtu pieejama visiem lietotājiem,
bet daļa - tikai autentificētiem.
Modificējiet savu kodu tā, lai veiksmīgas autentifikācijas gadījumā sesijā tiktu ierakstīts arī lietotāja lietotājvārds.
Izveidojiet tā, lai ienākot jebkurā vietnes lapā, autentificēts lietotājs redzētu savu lietotājvārdu, bet neautentificēts - saiti uz autentifikācijas lapu.