Bejelentkezés session segítségével PHP-n
A bejelentkezésünknek úgy kell működnie: a felhasználó,
aki be szeretne jelentkezni a weboldalra, felmegy
a login.php oldalra, beírja a helyes
felhasználónevet és jelszót, majd a weboldal további
oldalain már bejelentkezett felhasználóként navigál.
Ahhoz, hogy a weboldal más oldalai is tudják, hogy a felhasználónk be van jelentkezve, egy erre vonatkozó jelölést kell tárolnunk a session-ben.
Egyelőre a bejelentkezésünk nem teljesen működőképes, mivel a session-t még nem kapcsoltuk be, és a weboldal más oldalai nem tudják megállapítani, hogy a felhasználó be van-e jelentkezve vagy sem.
A bejelentkezés jelölését a $_SESSION['auth'] session
változóban fogjuk tárolni - ha ott a true érték
van, akkor a felhasználó be van jelentkezve,
ha null - akkor nincs bejelentkezve.
Végezzük el a megfelelő módosítást a kódunkban:
<?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 {
// helytelen felhasználónév vagy jelszó
}
}
?>
Most a weboldal bármely oldalán ellenőrizhetjük, hogy a felhasználó be van-e jelentkezve, a következő módon:
<?php
if (!empty($_SESSION['auth'])) {
}
?>
Egy adott oldal teljes szövegét le lehet zárni a nem bejelentkezett felhasználók elől:
<?php if (!empty($_SESSION['auth'])): ?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>szöveg csak bejelentkezett felhasználók számára</p>
</body>
</html>
<?php else: ?>
<p>kérjük, jelentkezzen be</p>
<?php endif; ?>
Csak az oldal egy részét is le lehet zárni:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>szöveg bármely felhasználó számára</p>
<?php
if (!empty($_SESSION['auth'])) {
echo 'szöveg csak bejelentkezett felhasználók számára';
}
?>
<p>szöveg bármely felhasználó számára</p>
</body>
</html>
Tegyük fel, hogy a weboldalunkon a login.php
oldalon kívül van még 1.php, 2.php
és 3.php oldal is. Állítsa be, hogy ezekhez
az oldalakhoz csak bejelentkezett felhasználók férhetnek hozzá.
Tegyük fel, hogy a weboldalunkon van még egy
index.php oldal is. Állítsa be, hogy az oldal
egy része minden felhasználó számára elérhető legyen,
egy része pedig csak bejelentkezett felhasználók számára.
Módosítsa a kódját úgy, hogy a sikeres bejelentkezéskor a session-be a felhasználó felhasználóneve is kerüljön mentésre.
Állítsa be, hogy a weboldal bármely oldalára érkezve a bejelentkezett felhasználó a saját felhasználónevét lássa, a nem bejelentkezett pedig a bejelentkezési oldalra mutató linket.