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 $_SESSION niet gebruiken.

2. Controleren of een gebruiker ingelogd is

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

Wat moet je kennen

  • isset()
  • $_SESSION
  • boolean waarden (true / false)

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

  • if
  • else
  • 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

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

  • <?= ?>
  • 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.