PHP 2 - variabelen, POST, GET, fgets, bindParam, trim, htmlspecialchars, superglobal

1 / 37
volgende
Slide 1: Tekstslide
InformaticaWOStudiejaar 4,5

In deze les zitten 37 slides, met interactieve quizzen en tekstslides.

time-iconLesduur is: 45 min
Dit is niet oké

Onderdelen in deze les

Slide 1 - Tekstslide

Deze slide heeft geen instructies

Lesstof


InformaticaBaas
D. PHP en SQL - SMC
PHP 2.1 

Slide 2 - Tekstslide

Deze slide heeft geen instructies

Leerdoelen 1/2
Na deze les kun je (met PHP):
  • variabelen aanmaken en een waarde toekennen
  • 3 don't's van namen van variabelen benoemen
  • 3 verschillende manieren benoemen om input te krijgen
  • verschil uitleggen tussen die manieren
  • uitleggen wat CLI is
  • ...

Slide 3 - Tekstslide

Rode achtergrond betekent: klas is stil, dit zijn de leerdoelen en quizzes waarbij niet overlegd mag worden.

Doel van deze les is om het leren zichtbaar te maken voor zowel leerling als docent.
Leerdoelen 2/2
Na deze les kun je (met PHP):
  • uitleggen hoe je tekst veilig in HTML toont met
     htmlspecialchars()
  • uitleggen dat je voor gebruikersinvoer in SQL prepared
     statements met parameters gebruikt
  • aangeven wat een superglobal variable is

Slide 4 - Tekstslide

Rode achtergrond betekent: klas is stil, dit zijn de leerdoelen en quizzes waarbij niet overlegd mag worden.

Doel van deze les is om het leren zichtbaar te maken voor zowel leerling als docent.
Variabelen 1/3
Net als Python en JavaScript heeft ook PHP variabelen

Een variabelenaam in PHP heeft de volgende kenmerken:
  • begint altijd met een $
  • begint nooit met een cijfer en heeft geen spaties
  • bevat alleen letters, cijfers en _
  • best practice: meerdere woorden? gebruik camelCase
  • schrijf woorden in variabelen uit maar hou het kort!
  • Let op: variabelen zijn case-sensitive!

3 don't's: geen spatie(s), niet beginnen met een cijfer, geen leestekens . - # !

Slide 5 - Tekstslide

Deze slide heeft geen instructies



Toegestaan:
  • $gemiddeldeTemperatuur
  • $Naam
  • $achternaam
  • $bestandsNaam1
  • $huidigeDag_ 
  • $volgende_week


Fout:
  • $gemiddelde Temperatuur
  • $1Naam
  • $achter Naam
  • $achter#naam
  • $mijn-naam
Variabelen 2/3

Slide 6 - Tekstslide

Deze slide heeft geen instructies

Variabelen 3/3
Een variabele ontstaat in PHP wanneer je er een waarde aan toekent:

$huidigeDag = "Woensdag";
$getal = 3;
$laterInTeVullen = null;
$laterInTeVullen = true;

Slide 7 - Tekstslide

Deze slide heeft geen instructies

PHP en HTML
PHP en HTML kunnen in 1 bestand staan (dat zagen we eerder al met het echo voorbeeld), maar je kunt ook in HTML bestanden naar PHP bestanden verwijzen
PHP-code wordt op de server uitgevoerd: de browser ontvangt normaal alleen het resultaat

Wanneer het formulier wordt 
verzonden, vraagt de browser
process.php op en de server voert de PHP-code daarvan uit

Slide 8 - Tekstslide

Deze slide heeft geen instructies


Welke van deze PHP
variabelen is niet correct?
A
$first_name
B
$_age
C
$1stplace
D
$userName

Slide 9 - Quizvraag

Deze slide heeft geen instructies


Welke van deze PHP
variabelen is niet correct?
A
$carModel
B
$Car_model
C
$_username
D
$user!Name

Slide 10 - Quizvraag

Deze slide heeft geen instructies


Welke van deze PHP
variabelen is niet correct?
A
$email.address
B
$Car_model
C
$_userName
D
$product_price

Slide 11 - Quizvraag

Deze slide heeft geen instructies


Welke van deze PHP
variabelen is niet correct?
A
$this_Year
B
$_thisYear
C
$thisYear
D
$this-Year

Slide 12 - Quizvraag

Deze slide heeft geen instructies

Input van gebruiker
We gaan nu een aantal manieren in PHP bespreken waarmee input kan worden gekregen van de bezoeker/gebruiker:
  • formulier via de POST-methode 
  • formulier via de GET-methode
  • via PHP commandoregel (CLI) met een functie: fgets(STDIN)

CLI: Command-Line Interface
STDIN bestaat niet in de browser, alleen in de CLI

Slide 13 - Tekstslide

Deze slide heeft geen instructies

POST en GET 1/3
Voor onze formulieren gebruiken we twee manieren om gegevens te versturen: POST en GET

  • POST de gegevens worden via de body verzonden
  • GET de gegevens worden via de URL verzonden

Slide 14 - Tekstslide

Deze slide heeft geen instructies

POST en GET 2/3
Via POST is de informatie dus niet zichtbaar in de adresbalk, en via GET wel, waarom is dat belangrijk?

Slide 15 - Tekstslide

Deze slide heeft geen instructies

POST en GET 2/3
Via POST is de informatie dus niet zichtbaar in de adresbalk, en via GET wel, waarom is dat belangrijk?

Dat is belangrijk omdat gegevens zichtbaar zijn... zoals
  • in de adresbalk 
  • in de browsergeschiedenis 
  • in serverlogs

Slide 16 - Tekstslide

Deze slide heeft geen instructies

POST en GET 3/3
Dit verschil is dus echt belangrijk!
Let op: POST betekent niet automatisch veilig!

GET en POST zijn echt verschillende soorten HTTP-verzoeken
Een server kan daarom expliciet eisen dat een bepaalde actie alleen via POST wordt uitgevoerd

Hier een voorbeeld van een
foutmelding van Microsoft:

Slide 17 - Tekstslide

Deze slide heeft geen instructies

Get
Je gebruikt Get wanneer:
  • je gegevens wilt ophalen van de server
  • de parameters eenvoudig en niet gevoelig zijn
     (bijvoorbeeld zoektermen of filters)
  • je wilt dat de aanvraag gecached kan worden
     (bijvoorbeeld voor snellere herhaling)
  • je wilt dat de URL deelbaar of bookmarkbaar is

Slide 18 - Tekstslide

Deze slide heeft geen instructies

POST
Je gebruikt POST wanneer:
  • je gegevens wilt verzenden die iets wijzigen
  • de gegevens niet in de URL thuishoren of groot zijn
     (denk aan wachtwoorden, bestanden of lange teksten)
  • je niet wilt dat de gegevens zichtbaar zijn in de URL
  • om gevoelige informatie tijdens het transport te versleutelen heb je
     HTTPS nodig... met POST komen de gegevens niet in de URL terecht

Slide 19 - Tekstslide

Deze slide heeft geen instructies

fgets(STDIN)
via de PHP functie fgets() in combinatie met STDIN kan ook input van de gebruiker worden gevraagd in PHP


Slide 20 - Tekstslide

Deze slide heeft geen instructies

Let op
Let op:
  • het <?php ... ?> blok kan ook 
     binnen de <html> tags staan!

  • de plek van de HTML uit de
     echo
    regels is afhankelijk
     van de plek in het bestand

Slide 21 - Tekstslide

Deze slide heeft geen instructies

GET          <--->        POST
asdf1114





Zoek de verschillen! Hoeveel zijn er?

Slide 22 - Tekstslide

Deze slide heeft geen instructies

GET          <--->        POST
asdf1114





Zoek de verschillen! Hoeveel zijn er? 4!

Slide 23 - Tekstslide

Deze slide heeft geen instructies

  GET           
Aantal verschillen:
  • GET: gegevens staan in de URL
  • POST: gegevens staan in de body van het verzoek
  • GET: vooral voor gegevens opvragen
  • POST: vooral voor gegevens versturen die iets wijzigen
  • GET: URL kan makkelijk worden gedeeld of gebookmarkt
  • POST: gegevens staan niet in de adresbalk
  • Beide: controleer met isset() of het verwachte veld bestaat

isset()
isset() controleert of een variabele of veld bestaat en niet null is

Slide 24 - Tekstslide

Deze slide heeft geen instructies


Wat is het belangrijkste verschil tussen de GET- en POST-methoden in PHP?
A
GET verstuurt gegevens in de HTTP-header, POST in de URL
B
GET verstuurt gegevens via de URL, POST verstuurt gegevens via de body van het verzoek
C
GET en POST zijn identiek, behalve de snelheid.
D
GET wordt alleen gebruikt voor het uploaden van bestanden, POST alleen voor tekst

Slide 25 - Quizvraag

Deze slide heeft geen instructies


Welke van de volgende stellingen over de POST-methode is correct?
A
GET is geschikter voor gevoelige gegevens dan POST, omdat de gegevens niet in de URL staan
B
Gegevens die via POST worden verzonden, zijn zichtbaar in de URL
C
POST is geschikter voor gevoelige gegevens dan GET, omdat de gegevens niet in de URL staan
D
POST-verzoeken worden altijd gecached door de browser

Slide 26 - Quizvraag

Deze slide heeft geen instructies


Wanneer is het beter om de GET-methode te gebruiken?
A
Als je wilt dat de URL deelbaar of te bookmarken is
B
Als je grote hoeveelheden data moet versturen
C
Bij het versturen van gevoelige gegevens zoals wachtwoorden
D
Als je geen URL-parameters wilt gebruiken

Slide 27 - Quizvraag

Deze slide heeft geen instructies

bindParam()
Met prepared statements en parameters voorkom je SQL-injecties... met bindParam() koppel je een waarde aan zo'n parameter

                      hier 
                      een 
            voorbeeld:

Slide 28 - Tekstslide

Deze slide heeft geen instructies

htmlspecialchars() en trim()
Met de PHP-functie htmlspecialchars() wordt tekst geëncodeerd wanneer je die in HTML uitvoert (zgn. output-escaping)
Daardoor worden ingevoerde HTML-tags als tekst weergegeven en bescherm je deze HTML-output tegen XSS-aanvallen

XSS-aanvallen zijn zgn. cross-site scripting aanvallen

Met trim() worden spaties en enters voor en na de invoer verwijderd

Slide 29 - Tekstslide

Deze slide heeft geen instructies

location location location
Let op, de plek van beide beschermingsmethoden verschilt...

prepared statements / bindParam()
gebruik je wanneer gegevens als waarde in een SQL-statement terechtkomen 
htmlspecialchars()
gebruik je bij output naar HTML: pas op het moment dat je data in een webpagina toont

Slide 30 - Tekstslide

Deze slide heeft geen instructies

Zoek op wat een XSS-aanval
is en omschrijf het in 1 zin
timer
3:00

Slide 31 - Open vraag

Deze slide heeft geen instructies


Wat doet de htmlspecialchars() functie in PHP?
A
Het versleutelt de gegevens die van een formulier komen
B
Het voorkomt dat speciale HTML-karakters worden uitgevoerd als HTML-code
C
Het verstuurt automatisch de gegevens via de POST-methode
D
Het converteert alle tekens naar hoofdletters

Slide 32 - Quizvraag

Deze slide heeft geen instructies

superglobal variable
We zagen bij POST en GET dat er opeens een _ aan het begin van de variabele stond: 


Dat heeft een reden: $_POST en $_GET zijn superglobals

Een superglobal is een vooraf gedefinieerde PHP-variabele die overal in je script beschikbaar is, ook binnen functies zonder global te gebruiken
Er zijn 9 superglobals in PHP: $GLOBALS, $_SERVER, $_GET, $_POST, $_FILES, $_COOKIE, $_SESSION, $_REQUEST, $_ENV

Let op: als je zelf een _ toevoegt aan een variabele maakt dat geen superglobal!

Slide 33 - Tekstslide

Deze slide heeft geen instructies

Opdracht # variabelen
Let op: geen gebruik van AI, wel w3schools.com
  1. maak een php bestand aan: .\htdocs\02_01.php
  2. vraag de bezoeker om naam en e-mail in te vullen
  3. gebruik hiervoor de POST methode
  4. geef via echo de invoer van de gebruiker weer
  5. test of het werkt via XAMPP
  6. als het werkt, pas dan htmlspecialchars() toe bij de echo regel 
  7. test het opnieuw en pas het aan totdat het werkt
timer
10:00

Slide 34 - Tekstslide

Deze slide heeft geen instructies

Leerdoelen 1/2
Nu kun je:
  • variabelen aanmaken en een waarde toekennen
  • 3 don't's van namen van variabelen benoemen
  • 3 verschillende manieren benoemen om input te krijgen
  • verschil uitleggen tussen die manieren
  • uitleggen wat CLI is
  • ...

Slide 35 - Tekstslide

Rode achtergrond betekent: klas is stil, dit zijn de leerdoelen en quizzes waarbij niet overlegd mag worden.

Doel van deze les is om het leren zichtbaar te maken voor zowel leerling als docent.
Leerdoelen 2/2
Nu kun je:
  • uitleggen hoe je tekst veilig in HTML toont met
     htmlspecialchars()
  • uitleggen dat je voor gebruikersinvoer in SQL prepared
     statements met parameters gebruikt
  • aangeven wat een superglobal variable is

Slide 36 - Tekstslide

Rode achtergrond betekent: klas is stil, dit zijn de leerdoelen en quizzes waarbij niet overlegd mag worden.

Doel van deze les is om het leren zichtbaar te maken voor zowel leerling als docent.

Slide 37 - Tekstslide

Deze slide heeft geen instructies