gegevens uit een form opslaan in een array vervolgens cookie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Rudie Jellema

Rudie Jellema

03/02/2017 17:25:34
Quote Anchor link
Beste mensen ik kamp met meerdere vragen.
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)
PHP script in nieuw venster Selecteer het PHP script
1
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>



Hier is mijn phpcode, die een array en de cookie aanmaken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
    $expiry
= new DateTime('+1 day');
    $data = array($_POST['vnaam'], $_POST['lnaam'], $_POST['email'], $_POST['taal']);
    setcookie('data', serialize($data), $expiry->getTimestamp());
?>


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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
 if (isset($_COOKIE['data']))
 {

     print_r($_COOKIE);
 }

?>


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!
Gewijzigd op 03/02/2017 17:29:05 door - Ariën -
 
PHP hulp

PHP hulp

28/04/2024 22:37:39
 
Adoptive Solution

Adoptive Solution

03/02/2017 21:38:51
Quote Anchor link
Wat ik dus niet goed begrijp is, waarom je het niet aan de meester vraagt.

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)
PHP script in nieuw venster Selecteer het PHP script
1
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 />';    
    }
    
}


?>
 
Rudie Jellema

Rudie Jellema

08/02/2017 16:42:44
Quote Anchor link
Bedankt!
 
- Rob -

- Rob -

08/02/2017 18:51:25
Quote Anchor link
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..
Gewijzigd op 08/02/2017 18:54:55 door - Rob -
 
Ben van Velzen

Ben van Velzen

08/02/2017 18:59:23
Quote Anchor link
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.
 
- Rob -

- Rob -

08/02/2017 19:03:47
Quote Anchor link
Oja oops, haha. Heb ik het verkeerd onthouden..
 
- Ariën  -
Beheerder

- Ariën -

08/02/2017 19:44:24
Quote Anchor link
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.
 
Ben van Velzen

Ben van Velzen

08/02/2017 20:43:53
Quote Anchor link
Ja, als ze op je verbinding zitten kan het, en uiteraard via XSS. In beide gevallen is het cookie zelf het probleem alleen niet.
 
- Ariën  -
Beheerder

- Ariën -

08/02/2017 20:52:51
Quote Anchor link
Je moet er inderdaad voor zorgen dat anderen geen HTML kunnen uitvoeren.
 
Thomas van den Heuvel

Thomas van den Heuvel

09/02/2017 09:57:30
Quote Anchor link
Het zal waarschijnlijk vooral bedoeld zijn als oefening, maar de oefening zelf is niet erg realistisch.

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.
 
Rudie Jellema

Rudie Jellema

10/02/2017 18:03:48
Quote Anchor link
- 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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.