Godkendelse via session i PHP
Vores godkendelse skal fungere sådan: en bruger,
der ønsker at logge ind på webstedet, går
til siden login.php, indtaster de korrekte
login og adgangskode og derefter bevæger sig rundt på siderne
på webstedet allerede godkendt.
For at andre sider på webstedet skal vide, at vores bruger er godkendt, skal vi gemme en markering om dette i sessionen.
Indtil videre er vores godkendelse ikke helt funktionsdygtig, da vi endnu ikke har tilsluttet sessionen, og andre sider på webstedet ikke kan finde ud af, om brugeren er godkendt eller ej.
Vi vil gemme markeringen om godkendelse i sessionvariablen
$_SESSION['auth'] - hvis der
står true, så er brugeren godkendt,
og hvis null - så er brugeren ikke godkendt.
Lad os foretage den tilsvarende rettelse i vores kode:
<?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 {
// forkert login eller adgangskode
}
}
?>
Nu kan vi på enhver side på webstedet kontrollere, om brugeren er godkendt eller ej, på denne måde:
<?php
if (!empty($_SESSION['auth'])) {
}
?>
Man kan lukke teksten på en given side helt for ikke-godkendte brugere:
<?php if (!empty($_SESSION['auth'])): ?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>tekst kun for godkendte brugere</p>
</body>
</html>
<?php else: ?>
<p>venligst log ind</p>
<?php endif; ?>
Man kan kun lukke en del af siden:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>tekst for alle brugere</p>
<?php
if (!empty($_SESSION['auth'])) {
echo 'tekst kun for godkendte brugere';
}
?>
<p>tekst for alle brugere</p>
</body>
</html>
Lad der på vores websted, udover siden login.php,
være siderne 1.php, 2.php
og 3.php. Sørg for, at kun godkendte
brugere kan få adgang til disse sider.
Lad der på vores websted være en side til
index.php. Sørg for, at en del
af denne side er åben for alle brugere,
og en del - kun for godkendte.
Modificer din kode, så der ved succesfuld godkendelse også gemmes brugerens login i sessionen.
Sørg for, at når der besøges en hvilken som helst side på webstedet, vil en godkendt bruger se sit login, mens en ikke-godkendt bruger vil se et link til loginsiden.