Periode 4 · Week 8
Week 8 – Dynamisch menu;
Wat leer je deze week?
In de vorige weken leerde je:
- gebruikers registreren
- gebruikers laten inloggen
- pagina’s beveiligen met sessions
Deze week maak je jouw interface slimmer.
Je leert hoe PHP verschillende content kan tonen afhankelijk van de loginstatus van een gebruiker.
Je menu wordt dus dynamisch.
Kernconcepten (in normale mensentaal)
Een dynamisch menu betekent eigenlijk:
“de website verandert afhankelijk van wie je bent.”
Bijvoorbeeld:
- een ingelogde gebruiker ziet:
- logout
- nieuw item toevoegen
- dashboard
- een bezoeker ziet:
- login
- registreren
PHP controleert dus:
is gebruiker ingelogd?
↓
ja → toon menu voor gebruikers
nee → toon menu voor bezoekers
Dat gebeurt server-side met een if statement.
Wat moet je kennen?
1. session_start() gebruiken
Uitleg
Om loginstatus te controleren moet de session gestart zijn.
Wat moet je kennen
session_start()- sessions initialiseren
- bovenaan pagina plaatsen
Voorbeeld
session_start();
Onthoud: Zonder
session_start()kun je$_SESSIONniet gebruiken.
2. Controleren of een gebruiker ingelogd is
Uitleg
Metisset()controleer je of een session bestaat.
Wat moet je kennen
isset()$_SESSION- boolean waarden (
true/false)
Voorbeeld
$isLoggedIn = isset($_SESSION['user']);
Onthoud: Dit geeft
trueoffalseterug.
3. Dynamische content tonen met if-statements
Uitleg
PHP kan verschillende HTML tonen afhankelijk van een conditie.
Wat moet je kennen
ifelse- PHP combineren met HTML
Voorbeeld
<?php if($isLoggedIn): ?>
<a href="create.php">
Nieuw item
</a>
<?php else: ?>
<a href="login.php">
Login
</a>
<?php endif; ?>
Onthoud: PHP bepaalt welke HTML zichtbaar wordt.
4. Alternatieve PHP syntax gebruiken
Uitleg
Bij veel HTML is alternatieve syntax vaak overzichtelijker dan losse{}.
Wat moet je kennen
if():else:endif;
Voorbeeld
<?php if($isLoggedIn): ?>
<p>Welkom terug!</p>
<?php else: ?>
<p>Log eerst in.</p>
<?php endif; ?>
Onthoud: Deze syntax wordt veel gebruikt in templates en views.
5. Een menu logisch opbouwen
Uitleg
Niet elke gebruiker hoeft dezelfde links te zien.
Voorbeeld
| Ingelogd | Niet ingelogd |
|---|---|
| Logout | Login |
| Nieuw item | Registreren |
| Dashboard | Home |
Onthoud: Het menu verandert op basis van de loginstatus.
6. Dynamische tekst tonen
Uitleg
Je kunt ook tekst aanpassen op basis van de gebruiker.
Wat moet je kennen
<?= ?>- associative arrays
- sessions uitlezen
Voorbeeld
<p>
Welkom <?= $_SESSION['user'] ?>
</p>
Onthoud: Je kunt data uit de session direct tonen in HTML.
Veelgemaakte fouten (met voorbeelden)
1. session_start() vergeten
Dan werkt $_SESSION niet.
Fout
$isLoggedIn = isset($_SESSION['user']);
Beter
session_start();
$isLoggedIn = isset($_SESSION['user']);
2. endif vergeten
Dan krijg je syntax errors.
Fout
<?php if($isLoggedIn): ?>
<p>Welkom</p>
Beter
<?php if($isLoggedIn): ?>
<p>Welkom</p>
<?php endif; ?>
3. HTML buiten het if-statement plaatsen
Dan ziet iedereen alles.
Fout
<a href="logout.php">Logout</a>
zonder controle.
Beter
<?php if($isLoggedIn): ?>
<a href="logout.php">
Logout
</a>
<?php endif; ?>
4. = gebruiken in plaats van ==
Dan verander je per ongeluk de waarde.
Fout
if($isLoggedIn = true)
Beter
if($isLoggedIn == true)
of gewoon:
if($isLoggedIn)
5. Sessiondata tonen zonder check
Dan krijg je warnings als de gebruiker niet ingelogd is.
Fout
<?= $_SESSION['user'] ?>
Beter
<?php if($isLoggedIn): ?>
<?= $_SESSION['user'] ?>
<?php endif; ?>
Snippets
Session starten
session_start();
Loginstatus controleren
$isLoggedIn = isset($_SESSION['user']);
Dynamisch menu
<?php if($isLoggedIn): ?>
<a href="logout.php">
Logout
</a>
<?php else: ?>
<a href="login.php">
Login
</a>
<?php endif; ?>
Gebruikersnaam tonen
<p>
Welkom <?= $_SESSION['user'] ?>
</p>
Alternatieve syntax
<?php if($isLoggedIn): ?>
<?php else: ?>
<?php endif; ?>
Video (coming soon)
Video komt eraan
Zodra de uitlegvideo beschikbaar is, wordt alleen de YouTube-ID vervangen.