gegevens uit een form opslaan in een array vervolgens cookie
Ik moet voor school een opdracht maken waaruit ik informatie uit een form haal deze vervolgens opsla in een array en vervolgens in een cookie. Dan moet ik de gegevens ook weer uit kunnen lezen.
Hier is mijn form:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<html>
<head>
</head>
<body>
<form method="POST">
Voornaam: <input type="text" name="vnaam"><br>
Achternaam: <input type="text" name="lnaam"><br>
Email: <input type="text" name="email"><br>
Taal: <input type="text" name="taal"><br>
<input type="submit">
</form>
<a href="php.php">Klik hier voor de uitwerking</a>
</bod
</html>
<head>
</head>
<body>
<form method="POST">
Voornaam: <input type="text" name="vnaam"><br>
Achternaam: <input type="text" name="lnaam"><br>
Email: <input type="text" name="email"><br>
Taal: <input type="text" name="taal"><br>
<input type="submit">
</form>
<a href="php.php">Klik hier voor de uitwerking</a>
</bod
</html>
Hier is mijn phpcode, die een array en de cookie aanmaken:
Code (php)
Wat ik dus niet goed begrijp is dat wanneer de form nog niet ingevuld is. ik meldingen in mijn browser krijg van php, undefined index. logisch. maar ik zou graag willen dat de gegevens in de array worden opgeslagen zonder dat deze van te voren meld dat hij nog leeg is. Als de gegevens zijn opgeslagen in de array en in de cookie. dan druk ik op een link die gaat naar de volgende pagina om daar vervolgens de cookie met als inhoud de array uit te lezen.
Nu begrijp ik alleen het idee van het loopen niet zo goed. Ik heb meerdere duidelijke uitleg filmpjes gekeken. en een basis loop snap ik maar. Maar hierbij denk ik omdat een cookie van zichzelf al een array is, dus gebruik moet maken van een foreach loop in een foreach loop? Ook heb de data in de $data array serialized maar unserilizen gaat lastig als ik niet bij mijn $data array kan komen.
in ieder geval zijn dit de uitwerkingen als ik de form volledig invul en de data uitlees uit de cookie met print_r:
Php code:
resultaat:
Quote:
Array ( [userdata] => a:4:{s:5:"vnaam";s:5:"Rudie";s:5:"lnaam";s:7:"Jellema";s:5:"email";s:30:"[email protected]";s:4:"taal";s:9:"Nedelands";} [data] => a:4:{i:0;s:5:"Rudie";i:1;s:2:"je";i:2;s:14:"[email protected]";i:3;s:9:"Nedelands";} )
alvast bedankt,
rudie
- Ariën -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes. Ook het ik het topic naar het 'Programmeerhulp'-forum geplaatst.
Alvast bedankt!
Hier kan je meer lezen over de mogelijke opmaakcodes. Ook het ik het topic naar het 'Programmeerhulp'-forum geplaatst.
Alvast bedankt!
Gewijzigd op 03/02/2017 17:29:05 door - Ariën -
Jij betaalt zijn salaris, dus je mag verwachten dat ie vertelt hoe het moet.
Maar goed, het is weekend, en het huiswerk moet maandag af zijn.
Hier de uitwerking van php.php :
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
if (isset($_COOKIE['data'])) {
echo '<pre>';
print_r($_COOKIE);
echo '</pre>';
$data = unserialize($_COOKIE['data']);
echo '<pre>';
print_r($data);
echo '</pre>';
$legend = array ('Voornaam', 'Achternaam', 'E-mail', 'Taal');
for ( $i = 0 ; $i < count( $data) ; $i++ ) {
echo $legend[$i] .' : ' . $data[$i] . '<br />';
}
}
?>
if (isset($_COOKIE['data'])) {
echo '<pre>';
print_r($_COOKIE);
echo '</pre>';
$data = unserialize($_COOKIE['data']);
echo '<pre>';
print_r($data);
echo '</pre>';
$legend = array ('Voornaam', 'Achternaam', 'E-mail', 'Taal');
for ( $i = 0 ; $i < count( $data) ; $i++ ) {
echo $legend[$i] .' : ' . $data[$i] . '<br />';
}
}
?>
Bedankt!
Gewijzigd op 08/02/2017 18:54:55 door - Rob -
Rob, ik denk dat je niet helemaal begrijpt wat een cookie is? De data in een cookie proppen is onveilig omdat je het te eenvoudig kunt manipuleren, niet omdat hackers dit zouden kunnen zien.
Oja oops, haha. Heb ik het verkeerd onthouden..
Maar Rob heeft wel enigszins gelijk. Cookies kunnen ook door hackers worden uitgelezen via XXS. Vaak gaat dit wel gepaard met interactie van de gebruiker zelf die uiteindelijk het slachtoffer wordt.
Ja, als ze op je verbinding zitten kan het, en uiteraard via XSS. In beide gevallen is het cookie zelf het probleem alleen niet.
Je moet er inderdaad voor zorgen dat anderen geen HTML kunnen uitvoeren.
Om terug te komen op het oorspronkelijke vraagstuk:
Quote:
maar ik zou graag willen dat de gegevens in de array worden opgeslagen zonder dat deze van te voren meld dat hij nog leeg is
En daar viel nu juist iets te leren. Wat je daar wilt doen zal niet (zomaar) gaan omdat als je een cookie set bij een pagina-aanroep, deze pas beschikbaar zal zijn (via $_COOKIE) bij daaropvolgende aanroepen. De opdracht om een cookie in te stellen zal pas na afloop van de eerste pagina-aanroep zijn uitgevoerd. En kan dus ook pas de daaropvolgende pagina-aanroep terug aangeboden worden (vanuit de webbrowser) aan de webserver.
Om dit probleem te omzeilen (server- en clientrzijde direct te synchroniseren) zou je kunnen overwegen om direct na het instellen van het cookie de pagina te verversen met een header('Location: ...') opdracht (in combinatie met exit). Hier is ook iets voor te zeggen omdat dit in feite een toestandsovergang (state change) is van (de status van) een (eind)gebruiker.
Op HTTP protocol niveau is het natuurlijk ook interessant om te volgen wat er gebeurt met request em response headers. Maar mogelijk gaan jullie het daar nog over hebben.
- Rob - op 08/02/2017 18:51:25:
Waarom zou je in hemelsnaam gevoelige gegevens in een cookie willen opslaan zoals een e-mailadres? Hackers zouden cookies kunnen zien en naar de e-mail van die gene allemaal spam te sturen..
Het is inderdaad gewoon een oefening. en de email is niet mijn hoofd email. gewoon een van de zovele. dus i don't care about it.
Toevoeging op 10/02/2017 18:03:48:
- Rob - op 08/02/2017 18:51:25:
Waarom zou je in hemelsnaam gevoelige gegevens in een cookie willen opslaan zoals een e-mailadres? Hackers zouden cookies kunnen zien en naar de e-mail van die gene allemaal spam te sturen..
Het is inderdaad gewoon een oefening. en de email is niet mijn hoofd email. gewoon een van de zovele. dus i don't care about it.