Dynamische Websites Week 3
donderdag 3 oktober 13
AGENDA • Herhaling • Cookies • Sessions
donderdag 3 oktober 13
voorbeeld.php Zuiver PHP:
•initialisatie variabelen •instructies
HTML
•minimum PHP •nooit HTML in PHP donderdag 3 oktober 13
FORM URL
Parameters Verstuurt HTTP Request donderdag 3 oktober 13
HTTP Methode
QUERYSTRING GET url: http://localhost:8888/dynwebexamples/ voorbeeld.php?name=Piet&street=Parkstraat
Hello, my name is <strong>
I live in
today is
donderdag 3 oktober 13
QUERYSTRING POST url: http://localhost:8888/dynwebexamples/voorbeeld.php body request: name=Piet&street=Parkstraat
Hello, my name is <strong>
I live in
today is
donderdag 3 oktober 13
• • redirect via php
resubmit naar zelfde pagina
donderdag 3 oktober 13
Validatie Navigatie
PROBLEEM?
• echo(): komt in body van response dus: headers al vertrokken
• header(): past headers aan donderdag 3 oktober 13
te laat!
?
donderdag 3 oktober 13
header.php
• Zie ook: • • • •
donderdag 3 oktober 13
require() include() include_once() http://php.net/manual/en/function.require-once.php
AGENDA • Herhaling • Cookies • Session
donderdag 3 oktober 13
? engels
PHP Interpreter
• hoe taalkeuze bewaren? donderdag 3 oktober 13
OPTIE 1: CLIENT 1. server geeft gekozen taal aan client 2. client bewaart dit en stuurt het bij iedere request mee 3. server gebruikt deze info om juiste taal te tonen
COOKIES donderdag 3 oktober 13
COOKIES • Wat? •
name-value paren, bv. language=frans
• Waarom? • • •
donderdag 3 oktober 13
opslaan tijdelijke data i.v.m. met één klant voor één domain/path
COOKIES • Waar? • •
aangemaakt door script op server bewaard door client in browser
• Hoe? • • •
donderdag 3 oktober 13
server maakt cookie aan ... en geeft deze aan client in response header browser stuurt ze mee in elke request header
COOKIES • Wanneer? • •
donderdag 3 oktober 13
tot vervaldatum of anders tot afsluiten browser
PHP: STAP 1 • server maakt cookie aan • ... en geeft deze aan client in response header • setcookie() • http://www.php.net/manual/en/function.setcookie.php
donderdag 3 oktober 13
STAP 1 taal=fr
Set-Cookie: taal=frans
donderdag 3 oktober 13
lees $_POST haal taal op setcookie(‘taal’, ‘frans’)
VOORBEELD
donderdag 3 oktober 13
PHP: STAP 2
• browser stuurt ze mee in elke request header • $_COOKIE • http://php.net/manual/en/reserved.variables.cookies.php
donderdag 3 oktober 13
STAP 2 lees $_POST haal taal op setcookie(‘taal’, ‘frans’) Cookie: taal=frans
donderdag 3 oktober 13
lees $_COOKIE ...
VOORBEELD
donderdag 3 oktober 13
PHP: STAP 3
• server zet vervaldatum • setcookie(naam, waarde, datumInVerleden)
donderdag 3 oktober 13
STAP 3 lees $_POST haal taal op setcookie(‘taal’, ‘frans’)
Cookie
lees $_COOKIE ...
: taal =frans
setcookie(‘taal’, ‘frans’, Set-Cookie: taal=deleted; time()-3600) expires=Thu, 01-Jan-1970 00:00:01 GMT
donderdag 3 oktober 13
VOORBEELD
donderdag 3 oktober 13
AGENDA • Herhaling • Cookies • Sessions
donderdag 3 oktober 13
? engels
PHP Interpreter
• hoe taalkeuze bewaren? donderdag 3 oktober 13
OPTIE 2: SERVER 1. server bewaart taalkeuze 2. server geeft token aan client 3. client bewaart dit als cookie en stuurt het bij iedere request mee 4. server gebruikt token om juiste taal op te zoeken
SESSIONS donderdag 3 oktober 13
SESSIONS • Wat? •
name-value paren, bv. language=frans
• Waarom? • • •
donderdag 3 oktober 13
opslaan tijdelijke data i.v.m. met één klant voor één domain/path
SESSIONS • Waar? • • •
aangemaakt door script op server
• • •
server maakt session aan
bewaard door server id bewaard door client in browser
• Hoe?
donderdag 3 oktober 13
Cookie
... en geeft id aan client in response header browser stuurt id mee in elke request header
SESSIONS • Wanneer? •
donderdag 3 oktober 13
tot afsluiten browser
PHP: STAP 1 • server maakt session aan • ... en geeft unieke id aan client in response header • session_start() • http://php.net/manual/en/function.session-start.php • gegevens naar keuze opslaan in $_SESSION • http://php.net/manual/en/reserved.variables.session.php donderdag 3 oktober 13
STAP 1 taal=fr
Set-Cookie: PHPSESSID=800215a882cc3 bcd86486688289bf054
donderdag 3 oktober 13
lees $_POST haal taal op session_start() $_SESSION[‘taal’]=‘frans’
VOORBEELD
donderdag 3 oktober 13
PHP: STAP 2 • browser stuurt sessionid mee in elke request header • session_start() om session opnieuw op te halen • $_SESSION lezen • http://php.net/manual/en/reserved.variables.session.php
donderdag 3 oktober 13
STAP 2 lees $_POST haal taal op Cookie: session_start() PHPSESSID=800215a882cc3 $_SESSION[‘taal’]=‘frans’ bcd86486688289bf054 session_start() lees $_SESSION ...
donderdag 3 oktober 13
VOORBEELD
donderdag 3 oktober 13
PHP: STAP 3
• session_start() om session opnieuw op te halen • session_destroy()
donderdag 3 oktober 13
STAP 3 lees $_POST haal taal op session_start() $_SESSION[‘taal’]=‘frans’ Cookie: PHPSESSID=800215a882cc3 bcd86486688289bf054
session_start() lees $_SESSION ...
session_start() session_destroy()
donderdag 3 oktober 13
VOORBEELD
donderdag 3 oktober 13
SESSIONS OF COOKIES?
donderdag 3 oktober 13
COOKIE • in browser • kan verwijderd/geblokkeerd worden • onveilig google op “edit http cookies” • vervaldatum zetbaar • enkel indien weinig data (netwerkbelasting!) • voorbeeld: taalkeuze donderdag 3 oktober 13
SESSION • op server • weg als browser toe enkel sessionID aanpasbaar, data niet • veilig(er) risico: ‘session hijacking’ • vervaldatum niet zetbaar • meer data mogelijk • voorbeeld: winkelkar donderdag 3 oktober 13
setcookie() start_session() passen header aan dus niet na echo() HTML donderdag 3 oktober 13
AGENDA • Herhaling • Cookies • Sessions
donderdag 3 oktober 13