# PHP-1 ## 1 Formulieren GET en POST ### 🎯 Leerdoelen - Je weet wat `GET` en `POST` zijn. - Je kunt gegevens doorsturen van een formulier naar een PHP-bestand. - Je begrijpt het verschil tussen `GET` en `POST` qua werking en veiligheid. ### 💡 Uitleg Bij een formulier kies je of je `GET` of `POST` gebruikt om gegevens naar de server te sturen:
Methode | Kenmerk | Voorbeeld |
---|---|---|
`GET` | Gegevens worden zichtbaar in de URL (minder veilig) | `pagina.php?naam=Ali` |
`POST` | Gegevens worden onzichtbaar verstuurd (veiliger) | De gegevens zitten in het HTTP-verzoek, niet in de URL |
Geen naam ingevuld.
"; } ?> ``` **Uitleg:** We controleren met `isset()` of de waarde bestaat. `htmlspecialchars()` voorkomt XSS-aanvallen. Vul het formulier in en kijk wat er gebeurt. Wat zie je op URL als je de begroeting ziet? Pas de tekst na het = teken op de url aan en reload je pagina, wat gebeurt er? ### 🛠️ Opdracht 3 – POST-versie maken 1. Pas in `formulier.html` het formulier aan naar: ```html ``` ### 🛠️ Opdracht 2 – login.php Maak een bestand `login.php` dat de naam opslaat in een sessie en doorstuurt: ```php ``` ### 🛠️ Opdracht 3 – welkom.php Maak een bestand `welkom.php` dat de gebruiker begroet: ```php Welkom, " . $_SESSION["gebruiker"] . "!"; echo ''; } else { echo "Je bent niet ingelogd.
"; } ?> ``` ### 🛠️ Opdracht 4 – uitloggen.php ```php ``` ### 🧠 Reflectie - Waarom moet je altijd `session_start()` gebruiken bovenaan? - Wat gebeurt er als je probeert `welkom.php` te openen zonder in te loggen? - Wat zou je kunnen uitbreiden, bijvoorbeeld met wachtwoordcontrole? ### 📤 Inleveren - Screenshots van `inloggen.html`, `welkom.php` met jouw naam, en `uitloggen.php` na het uitloggen. - Je moet gebruik maken van sessies en de naam van de gebruiker correct kunnen tonen op meerdere pagina’s. ## 9 Inloggen met wachtwoordcontrole ### **🎯** Leerdoelen - Je maakt een formulier met gebruikersnaam én wachtwoord. - Je controleert de invoer in PHP. - Je begrijpt waarom `$_GET` niet veilig is voor wachtwoorden. - Je leert werken met een associatieve array. ### 💡 Uitleg Een loginformulier stuurt gebruikersnaam en wachtwoord naar PHP. In deze les gebruiken we eerst `$_GET` om te laten zien waarom dat niet veilig is – je ziet het wachtwoord in de URL. ### 🛠️ Opdracht 1 – login.html Maak een bestand `login.html`: ```htmlFoutieve inloggegevens. Probeer opnieuw.
"; } ?> ``` #### Let op: Als je dit formulier verstuurt, zie je het wachtwoord in de URL. Dat is niet veilig! ### 🛠️ Opdracht 3 – Verbeter met POST - Pas het formulier aan zodat het `method="post"` gebruikt - Pas `controle.php` aan zodat het `$_POST` gebruikt - Test: zie je het wachtwoord nog in de URL? ### 💡 Uitleg – Associatieve array Tot nu toe heb je gewerkt met lijsten zoals: ```php $hobby’s = ["voetbal", "gamen", "lezen"]; ``` Dit is een **indexed array**: de computer onthoudt zelf de volgorde (index 0, 1, 2). Een **associatieve array** heeft zelfgekozen namen als index (zogenaamde "keys"): ```php $gebruikers = [ "admin" => "geheim123", "student" => "welkom01" ]; ``` Je kunt dan bijvoorbeeld zeggen: ```php echo $gebruikers["admin"]; // toont: geheim123 ``` Heel handig voor wachtwoorden of gebruikerslijsten! ### 🛠️ Extra opdracht – Meerdere gebruikers Breid `controle.php` uit met een associatieve array van toegestane gebruikers en wachtwoorden: ```php "geheim123", "student" => "welkom01", "docent" => "phprules" ]; $gebruiker = $_POST["gebruiker"]; $wachtwoord = $_POST["wachtwoord"]; if (isset($gebruikers[$gebruiker]) && $gebruikers[$gebruiker] == $wachtwoord) { echo "Inloggen mislukt.
"; } ?> ``` **Voeg zelf nog twee gebruikers toe: één voor jouw zelf (dus je eigen voornaam) en één voor een klasgenoot.** ### 🧠 Reflectie - Wat is het verschil tussen een indexed array en een associatieve array? - Waarom is het veiliger om `$_POST` te gebruiken voor wachtwoorden? - Wat zou je doen om inloggen met een wachtwoord nog veiliger te maken? ### 📤 Inleveren - controle.php - Een .txt. of .pdf bestand met de antwoorden op de drie reflectievragen.