Autorizacija kroz sesiju u PHP
Naša autorizacija treba da funkcioniše ovako: korisnik,
koji želi da se autorizuje na sajtu, ode
na stranicu login.php, unese tačne
korisničko ime i lozinku i zatim pregleda stranice
sajta već budući autorizovan.
Da bi druge stranice sajta znale o tome, da je naš korisnik autorizovan, moramo čuvati u sesiji oznaku o tome.
Za sada naša autorizacija nije sasvim radna, pošto sesiju još nismo povezali i druge stranice sajta ne mogu da razumeju, da li je korisnik autorizovan ili ne.
Čuvaćemo oznaku o autorizaciji u promenljivoj
sesije $_SESSION['auth'] - ako je tamo
upisano true, onda je korisnik autorizovan,
a ako je null - onda nije autorizovan.
Hajde da unesemo odgovarajuću ispravku u naš 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 {
// pogrešno je uneo korisničko ime ili lozinku
}
}
?>
Sada na bilo kojoj stranici sajta možemo proveriti, da li je korisnik autorizovan ili ne, na ovaj način:
<?php
if (!empty($_SESSION['auth'])) {
}
?>
Može se zatvoriti tekst neke stranice u potpunosti za neautorizovanog korisnika:
<?php if (!empty($_SESSION['auth'])): ?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>tekst samo za autorizovanog korisnika</p>
</body>
</html>
<?php else: ?>
<p>molim vas, autorizujte se</p>
<?php endif; ?>
Može se zatvoriti samo deo stranice:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>tekst za bilo kog korisnika</p>
<?php
if (!empty($_SESSION['auth'])) {
echo 'tekst samo za autorizovanog korisnika';
}
?>
<p>tekst za bilo kog korisnika</p>
</body>
</html>
Neka na našem sajtu, osim stranice login.php,
ima još i stranice 1.php, 2.php
i 3.php. Uredite tako da ovim
stranicama može pristupiti samo autorizovani
korisnik.
Neka na našem sajtu ima još i stranica
index.php. Uredite tako da deo
ove stranice bude otvoren za sve korisnike,
a deo - samo za autorizovane.
Izmenite vaš kod tako da pri uspešnoj autorizaciji u sesiju se upisuje takođe korisničko ime korisnika.
Uredite tako da pri ulasku na bilo koju stranicu sajta, autorizovani korisnik vidi svoje korisničko ime, a neautorizovani - link na stranicu za autorizaciju.