Periode 4 · Week 8

Dynamisch menu

Wat leer je deze week?#

In de vorige weken leerde je:

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#

Een dynamisch menu betekent eigenlijk:

“de website verandert afhankelijk van wie je bent.”

Bijvoorbeeld:

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

Voorbeeld

session_start();

Onthoud: Zonder session_start() kun je $_SESSION niet gebruiken.

2. Controleren of een gebruiker ingelogd is

Uitleg
Met isset() controleer je of een session bestaat.

Wat moet je kennen

Voorbeeld

$isLoggedIn = isset($_SESSION['user']);

Onthoud: Dit geeft true of false terug.

3. Dynamische content tonen met if-statements

Uitleg
PHP kan verschillende HTML tonen afhankelijk van een conditie.

Wat moet je kennen

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

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

IngelogdNiet ingelogd
LogoutLogin
Nieuw itemRegistreren
DashboardHome

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

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; ?>