# PHP-1
## 1 Gegevens doorsturen met GET en POST
### **🎯** Leerdoelen
- Je weet wat `GET` en `POST` zijn.
- Je kunt gegevens doorsturen van de ene pagina naar de andere.
- Je kunt de gegevens gebruiken in een tweede PHP-bestand.
### 💡 Uitleg
Bij een formulier kies je of je `GET` of `POST` gebruikt om de ingevulde gegevens naar de server te sturen:
Methode | Kenmerk | Voorbeeld |
---|
`GET` | Toont gegevens in de URL | `pagina.php?naam=Ali` |
`POST` | Stuurt gegevens "verborgen" via de browser | Geen zichtbare URL-parameters |
### 🛠️ Opdracht 1 – formulier.html
Maak een bestand aan met de naam `formulier.html` en zet hier de volgende code in:
```html
Wat is je naam?
```
Check,` method="get"` op regel 7
### 🛠️ Opdracht 2 – begroeting.php
Maak een nieuw bestand met de naam `begroeting.php` en zet hierin:
```php
Hallo $naam!";
?>
```
Check of alles werkt.
Als dat zo is verander dan regel 7 in het formulier naar:
```php
```
### 🛠️ Opdracht 2 – uitslag.php met array en loop
Maak een nieuw bestand `uitslag.php` en gebruik deze code:
```php
"B",
"vraag2" => "B",
"vraag3" => "B"
];
$goed = 0;
if (isset($_GET['vraag1']) && $_GET['vraag1'] == 'a') {
$goed++;
}
if (isset($_GET['vraag2']) && $_GET['vraag2'] == 'c') {
$goed++;
}
if (isset($_GET['vraag3']) && $_GET['vraag3'] == 'b') {
$goed++;
}
echo "Je hebt $goed van de 3 vragen goed!
";
?>
```
### Opdracht
Bereid de quiz uit met 2 zelf bedachte vragen.
Zet de code in uitslag.php om, waarbij je de score berekend met behulp van een loop.
Vraag AI om hulp en vraag AI om uit te leggen hoe de loop werkt.
### 🧠 Reflectie
- In het HTML-formulier staan telkens drie <input> elementen met dezelfde naam. Leg uit waarom dat zo is.
- Wat is het voordeel van een array gebruiken voor de juiste antwoorden?
- Wat gebeurt er als je geen antwoord op een vraag invult?
- Wat doet isset() op regel 13, 16 en 19?
- Hoe zou je de quiz uitbreiden naar 5 of 10 vragen met zo min mogelijk extra code?
### 📤 Inleveren
- `quiz.html` en `uitslag.php`
## 5 Functies in PHP
### **🎯** Leerdoelen
- Je weet wat een functie is in PHP.
- Je kunt zelf een functie schrijven en aanroepen.
- Je kunt gegevens meegeven aan een functie (parameters).
### 💡 Uitleg
Een functie is een blokje code dat je een naam geeft en later opnieuw kunt gebruiken. Zo hoef je niet telkens dezelfde code opnieuw te schrijven.
Je kunt informatie aan een functie meegeven (dat noem je een **parameter**) en je kunt iets teruggeven (dat noem je een **return**).
#### Voorbeeld:
```php
";
}
begroet("Fatima");
begroet("Ali");
?>
```
### 🛠️ Opdracht 1 – Maak je eigen begroetfunctie
1. Maak een nieuw bestand `functie.php`
2. Maak daarin een functie `begroet` die één parameter accepteert: `$naam`
3. Laat de functie een boodschap tonen zoals “Hoi, \[naam\], welkom terug!”
4. Roep de functie minstens 3 keer aan met verschillende namen.
### 🛠️ Opdracht 2 – Maak een rekentool met functie
1. Maak een functie `kortingBerekenen` die twee getallen als parameter gebruikt: `$bedrag` en `$percentage`
2. Laat de functie het bedrag na korting `returnen`
3. Laat het resultaat op het scherm zien met `echo`
#### Voorbeeldcode:
```php
Je betaalt nu: €" . kortingBerekenen(100, 25) . "";
?>
```
### 🧠 Reflectie
- Waarom is het handig om functies te gebruiken?
- Wat gebeurt er als je geen parameter meegeeft aan een functie die er wel één verwacht?
- Waar zou je functies nog meer voor kunnen gebruiken?
### 📤 Inleveren
- `functie.php` met ten minste 1 begroetfunctie én 1 rekentool.
Je moet ten minste 2 functies gebruiken met parameters, waarvan 1 ook een `return` gebruikt.
## 6 Datum en Tijd in PHP
### **🎯** Leerdoelen
- Je weet hoe je de huidige datum en tijd kunt tonen met PHP.
- Je kunt berekenen hoeveel dagen of jaren geleden iets was.
- Je kunt de leeftijd berekenen op basis van een geboortedatum.
### 💡 Uitleg
PHP heeft functies om met datum en tijd te werken. De belangrijkste is `date()`, waarmee je de huidige tijd kunt weergeven in verschillende formaten.
- `date("Y")` → jaar (bijv. 2025)
- `date("d-m-Y")` → dag-maand-jaar (bijv. 04-06-2025)
- `date("H:i")` → tijd in uren:minuten (bijv. 14:36)
#### Voorbeeld:
```php
";
echo "Het is nu: " . date("H:i") . " uur.";
?>
```
### 🛠️ Opdracht 1 – Toon de datum en tijd
1. Maak een bestand `datum.php`
2. Laat daarin zien:
- Welke dag het vandaag is
- De datum in formaat `dd-mm-yyyy`
- De tijd in uren en minuten
### 🛠️ Opdracht 2 – Leeftijd berekenen
Bereken iemands leeftijd op basis van geboortedatum:
```php
diff($geboortedag);
echo "Je bent " . $verschil->y . " jaar oud.";
?>
```
**Uitleg:** PHP kan automatisch het aantal jaren berekenen tussen twee datums met `diff()`.
### 🧠 Reflectie
- Wat is het verschil tussen `date()` en `new DateTime()`?
- Waarom moet je bij het berekenen van leeftijd een `diff()` gebruiken?
- Wat zou er gebeuren als je geboortedatum in een verkeerd formaat schrijft?
### 📤 Inleveren
- `datum.php` met de juiste datum, tijd en berekende leeftijd.
Je gebruikt minstens één functie met datum en één met tijd, en `diff()` voor de leeftijd.
## 7 Sessies en Inloggen met PHP
### **🎯** Leerdoelen
- Je weet wat een sessie is in PHP.
- Je kunt een eenvoudige inlogpagina maken.
- Je kunt een gebruiker herkennen op een andere pagina.
### 💡 Uitleg
Een **sessie** in PHP is een manier om informatie te onthouden zolang de gebruiker je website bezoekt. Bijvoorbeeld of iemand is ingelogd of wat zijn/haar gebruikersnaam is.
Je start een sessie met:
```php
```
### 🛠️ Opdracht 1 – inloggen.html
Maak een bestand `inloggen.html` met een formulier waarin je gebruikersnaam invoert:
```html
Inloggen
```
### 🛠️ 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 'Uitloggen
';
} 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.
## 8 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`:
```html
Loginformulier
```
### 🛠️ Opdracht 2 – controle.php
Maak een bestand `controle.php` waarin je controleert of de gebruiker mag inloggen:
```php
Welkom, $gebruiker!";
} else {
echo "Foutieve 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 "Welkom, $gebruiker!
";
} else {
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.