Periode 4 · Week 7
Week 7 – Loginstatus & beveiligde pagina’s;
Wat leer je deze week?
Vorige week kon je gebruikers laten inloggen met een loginformulier en sessions.
Deze week ga je pagina’s beschermen.
Niet iedereen mag zomaar overal bij kunnen.
Je leert hoe PHP controleert of een gebruiker ingelogd is en hoe je bezoekers doorstuurt als dat niet zo is.
Kernconcepten (in normale mensentaal)
Een beveiligde pagina werkt eigenlijk als een portier bij een concert 😭
De portier kijkt:
“Sta jij op de gastenlijst?”
Bij een webapp doet PHP eigenlijk hetzelfde.
PHP controleert:
- bestaat er een session?
- is de gebruiker ingelogd?
- mag deze gebruiker deze pagina zien?
Als dat niet zo is:
- wordt de gebruiker doorgestuurd naar login.php
Dus ongeveer zo:
gebruiker opent pagina
↓
PHP controleert session
↓
ingelogd?
↓
ja → pagina tonen
nee → redirect naar login
Belangrijk:
de controle gebeurt server-side in PHP.
Dus:
- niet alleen een knop verbergen
- niet alleen CSS gebruiken
- PHP bepaalt uiteindelijk toegang
Wat moet je kennen?
1. session_start() gebruiken
Uitleg
Sessions werken alleen als je ze eerst start.
Wat moet je kennen
session_start()- sessions initialiseren
- bovenaan pagina plaatsen
Voorbeeld
session_start();
Onthoud:
session_start()moet bovenaan je bestand staan, vóór HTML output.
2. Loginstatus opslaan in een session
Uitleg
Na een succesvolle login sla je informatie op in$_SESSION.
Wat moet je kennen
$_SESSION- associative arrays
- loginstatus onthouden
Voorbeeld
$_SESSION['user'] = $user['username'];
Onthoud: Sessions werken als tijdelijk geheugen voor PHP.
3. Controleren of een gebruiker ingelogd is
Uitleg
Metisset()controleer je of een session bestaat.
Wat moet je kennen
isset()$_SESSION- if-statements
Voorbeeld
if (isset($_SESSION['user'])) {
echo "Welkom!";
}
Onthoud:
isset()controleert of een waarde bestaat.
4. Een pagina beveiligen
Uitleg
Als een gebruiker niet ingelogd is, stuur je die terug naar de loginpagina.
Wat moet je kennen
header()exit- redirects
- login checks
Voorbeeld
session_start();
if (!isset($_SESSION['user'])) {
header('Location: login.php');
exit;
}
Onthoud: De redirect stopt ongewenste toegang tot de pagina.
5. Uitloggen met session_destroy()
Uitleg
Bij uitloggen verwijder je de session van de gebruiker.
Wat moet je kennen
session_destroy()- redirects
- sessions verwijderen
Voorbeeld
session_start();
session_destroy();
header('Location: login.php');
exit;
Onthoud: Uitloggen betekent dat de session verwijderd wordt.
6. Beschermde pagina’s herkennen
Uitleg
Niet elke pagina hoeft beveiligd te zijn.
Voorbeelden
| Pagina | Beveiligd? |
|---|---|
| login.php | Nee |
| register.php | Nee |
| dashboard.php | Ja |
| admin.php | Ja |
| edit.php | Vaak wel |
Onthoud: Pagina’s die data aanpassen zijn meestal beveiligd.
Veelgemaakte fouten (met voorbeelden)
1. session_start() vergeten
Dan werken sessions niet.
Fout
$_SESSION['user'] = 'Cass';
Beter
session_start();
$_SESSION['user'] = 'Cass';
2. HTML tonen vóór session_start()
Dan krijg je vaak errors.
Fout
<h1>Welkom</h1>
<?php
session_start();
?>
Beter
<?php
session_start();
?>
3. Alleen een knop verbergen
Een verborgen knop betekent niet dat een pagina beveiligd is.
Fout
<?php if($loggedIn): ?>
<a href="admin.php">Admin</a>
<?php endif; ?>
zonder beveiliging in admin.php.
Beter
session_start();
if (!isset($_SESSION['user'])) {
header('Location: login.php');
exit;
}
4. exit vergeten na redirect
Dan kan PHP soms nog verder uitvoeren.
Fout
header('Location: login.php');
Beter
header('Location: login.php');
exit;
5. session_destroy() gebruiken zonder session_start()
Dan bestaat de session niet.
Fout
session_destroy();
Beter
session_start();
session_destroy();
Snippets
Session starten
session_start();
Loginstatus opslaan
$_SESSION['user'] = $user['username'];
Checken of gebruiker ingelogd is
if (isset($_SESSION['user'])) {
}
Pagina beveiligen
session_start();
if (!isset($_SESSION['user'])) {
header('Location: login.php');
exit;
}
Uitloggen
session_start();
session_destroy();
header('Location: login.php');
exit;
Video (coming soon)
Video komt eraan
Zodra de uitlegvideo beschikbaar is, wordt alleen de YouTube-ID vervangen.