18 berichten aan het bekijken - 1 tot 18 (van in totaal 18)
  • Q:
    Bijdrager
    freshface

    [PHP] Sessies (gegevens gaan verloren)

    Hey,

    Ik ben een formulier met sessies aan het maken.
    Dat formulier bestaat uit verschillende stappen en die stappen zijn dan ook verschillende pagina’s.
    Op de eertste pagina kan je, je naam – adres – telefoon … invullen.
    Na een druk op de knop ga je naar pagina 2 en worden die gegevens opgeslagen in een sessie.

    session_algemeen.php:
    [code:1:4a0880af34]<?php
    session_start();
    header("Cache-control: private"); //IE 6 Fix

    //—[ALGEMENE GEGEVENS]————————————————————————————-
    // Naam ophalen
    $_SESSION[’naam’] = $_POST[’naam’];
    // Voornaam ophalen
    $_SESSION[’voornaam’] = $_POST[’voornaam’];
    // Email ophalen
    $_SESSION[’email’] = $_POST[’email’];
    // Adres ophalen (Straat en nummer)
    $_SESSION[’adres’] = $_POST[’adres’];
    // Adres ophalen (Posctode en provincie)
    $_SESSION[’postcode’] = $_POST[’postcode’];
    // Telefoon
    $_SESSION[’telefoon’] = $_POST[’telefoon’];
    // Aantal volwassenen
    $_SESSION[’aantalVolwassenen’] = $_POST[’aantalVolwassenen’];
    // Aantal kinderen
    $_SESSION[’aantalKinderen’] = $_POST[’aantalKinderen’];
    // Dag
    $_SESSION[’dag’] = $_POST[’dag’];
    // Maand
    $_SESSION[’maand’] = $_POST[’maand’];
    // Jaar
    $_SESSION[’jaar’] = $_POST[’jaar’];
    // Uur van aanvang
    $_SESSION[’uurAanvang’] = $_POST[’uurAanvang’];
    // Reden
    $_SESSION[’reden’] = $_POST[’reden’];
    ?>
    [/code:1:4a0880af34]

    Op de 2de pagina moet je dan weer andere gegevens invullen en doe moeten dan ook weer worden opgeslagen.
    Daarvoor maak ik een nieuwe sessie pagina aan.

    session_aperitief.php:
    [code:1:4a0880af34]
    <?php
    session_start();
    header("Cache-control: private"); //IE 6 Fix

    //—[APERITIEF]————————————————————————————-
    $_SESSION[’eten1’] = $_POST[’eten1’];
    $_SESSION[’eten2’] = $_POST[’eten2’];
    $_SESSION[’eten3’] = $_POST[’eten3’];
    // …
    [/code:1:4a0880af34]

    Maar, als die gegevens (van aperitief) worden opgeslagen dan gaan die andere gegevens verloren?
    Is daar iets aan te doen?

    Bijdrager
    rburgt

    probeer eens op bijde pagina’s onderaan

    print_r($_SESSION);

    te zetten, wat komt er uit ?

    Bijdrager
    basvandorst

    Let ook even op dat session_start(); echt helemaal bovenaan de scripts moet komen te staan
    Dus niet dat je eerst wat HTML showt en dan pas PHP

    Misschien ook wel een idee om eerst je vars in een array te proppen en daarna in de sessie:
    [code:1:a652e3ec52]
    **snip**
    $contact = array( ‘adres’ => $_POST[’adres’],
    ‘postcode’ => $_POST[’postcode’],
    ‘woonplaats’ => $_POST[’woonplaats’],
    ‘telnr’ => $_POST[’telnr’],
    ‘faxnr’ => $_POST[’faxnr’],
    ‘email’ => $_POST[’email’],
    ‘website’ => $_POST[’website’]
    );

    $_SESSION[’contact’] = $contact;
    **snap**
    [/code:1:a652e3ec52]

    Bijdrager
    freshface

    Ik zal het eens testen.
    Hier kan je anders de gegevens bekijken; http://users.pandora.be/rabbit_design/Forums/session.zip

    Bijdrager
    freshface

    Goede versie is nu te downloaden: http://users.pandora.be/rabbit_design/Forums/session.zip
    Ik zou het liefste van al met 1 php file werken die de gegevens bijhoud.

    Bijdrager
    basvandorst

    Het is logisch dat de gegevens elke keer worden overschreven:
    <?php include(“session.php”); ?>

    Dit roept dus elke keer session.php aan en de gegevens worden dus de eerste keer wel in de session gezet, maar daarna worden ze overschreven naar nix

    Bijdrager
    Kyokushinkai

    [code:1:94e1cf6487]$_SESSION[’email’][/code:1:94e1cf6487]

    Dit is toch de code om variabelen UIT een sessie te halen? Of maakt dat niks uit? Ik gebruik deze code om variabelen uit een formulier op te slaan in een sessie:
    [code:1:94e1cf6487]
    $variabelnaam = $_POST[’invoerveldnaam’];
    session_register(’variabelnaam’);
    [/code:1:94e1cf6487]

    En zoals basvandorst zei, zet alles in een array, dan hoef je maar één variabel in de sessie te bewaren.

    Bijdrager
    freshface

    Ok, dan werk ik dus best met verschillende bestanden om de sessies op te slagen.

    Bijdrager
    basvandorst
    ”konijn”

    Ok, dan werk ik dus best met verschillende bestanden om de sessies op te slagen.

    Nou het beste is volgens mij om tijdens die check van :
    if ($reden == “koffietafel”) {
    dus de reden wel elke keer opnieuw in de sessie te schrijven, en de andere var’s daar in die if/else loop op te slaan

    Kyokushinkai: je kan ze er mee uit lezen maar je kan ze ook opslaan tenminste ik werk zo ook altijd, nooit problemen gehad;)

    Bijdrager
    Kyokushinkai

    Ok, dat wist ik nog niet. Ik ben dan ook nog niet zo heel lang bezig met php. :) Maar hoort het “officieel” wel zo?

    Bijdrager
    basvandorst
    ”Kyokushinkai”

    Ok, dat wist ik nog niet. Ik ben dan ook nog niet zo heel lang bezig met php. :) Maar hoort het “officieel” wel zo?

    session_register is volgens mij niet mogelijk voor vroegere PHP versies onder de 4.2.nogiets
    edit: http://nl2.php.net/session_register hier staat er wel ’t een en ander over

    Bijdrager
    Kyokushinkai
    ”basvandorst”
    ”Kyokushinkai”

    Ok, dat wist ik nog niet. Ik ben dan ook nog niet zo heel lang bezig met php. :) Maar hoort het “officieel” wel zo?

    session_register is volgens mij niet mogelijk voor vroegere PHP versies onder de 4.2.nogiets
    edit: http://nl2.php.net/session_register hier staat er wel ’t een en ander over

    Aha, en ik ben bij versie 4 begonnen en heb dus session_register() aangeleerd. Nou jongens, ga met de tijd mee zou ik zeggen. :wink:

    Bijdrager
    GeertDD

    session_register() is helemaal niet nodig.

    Gewoon zo:
    [code:1:4539c92b5d]<?php

    session_start();

    $var = ‘value;
    $_SESSION[’name’] = $var;

    ?>
    [/code:1:4539c92b5d]

    php.net:

    If you are using $_SESSION do not use session_register()

    Bijdrager
    mac748

    Waarom 2 pagina’s – het formulier lijkt me niet zo heel lang – knip het in tweeen met javascript/css, dan heb je helemaal geen $_session nodig en het scheelt een pageload.

    Bijdrager
    basvandorst
    ”mac748″

    Waarom 2 pagina’s – het formulier lijkt me niet zo heel lang – knip het in tweeen met javascript/css, dan heb je helemaal geen $_session nodig en het scheelt een pageload.

    Heb toevallig gisteren met konijn gesproken, en het de formulieren erachter gezien. Dat zijn er een stuk of 6:) dus het is wel zo makkelijk om met sessies te werken.

    En hem onderstaand voorbeeld gegeven:
    [code:1:cd865f1e63]
    <?php
    session_start();

    $reden = $_GET[’reden’]; // of post ;)

    if ($reden == ”)
    {
    // HTML BEGIN
    // hidden value meegeven met reden is koffie ofzo
    }
    elseif ($reden == ‘koffie’)
    {
    // $_SESSION[’hier alle vars van BEGIN ‘];
    // html pagina voor koffie
    // hidden value meegeven met reden is buffet ofzo
    }
    elseif ($reden == ‘buffet’)
    {
    // $_SESSION[’hier alle vars van KOFFIE ‘];
    // html pagina voor buffet
    // hidden value meegeven met reden is einde ofzo
    }
    elseif ($reden == ‘einde’)
    {
    $_SESSION[’hier alle vars van BUFFET’]
    // onderstaande print de vars uit de sessie, maar je kan ze natuurlijk ook gebruiken voor de mail

    print $_SESSION[’var1’];
    print $_SESSION[’var2’];
    print $_SESSION[’var3’];

    }

    ?>[/code:1:cd865f1e63]

    Bijdrager
    Brasco

    Ik zou eens proberen die header weg te halen voor dat je sessie aanspreekt. ergens in mijn achterhoofd zit iets met “Sessies en headers don’t mix”.

    Laat ik het anders zeggen: Eerst je sessie vars aanspreken en dan pas header uitvoeren.

    Bijdrager
    basvandorst
    ”Brasco”

    Ik zou eens proberen die header weg te halen voor dat je sessie aanspreekt. ergens in mijn achterhoofd zit iets met “Sessies en headers don’t mix”.

    Laat ik het anders zeggen: Eerst je sessie vars aanspreken en dan pas header uitvoeren.

    Ik had konijn ergens midden in dit topic de oplossing al gegeven hoor;)
    Zat namelijk in het feit dat hij elke keer een include deed van een pagina waar de sessies werden opgeslagen, en dus ook werden overschreven:)

    Bijdrager
    Brasco

    :o :lol: God, moet toch wat meer slaap genieten denk ik. Of gewoon een hele thread door lezen :wink:

18 berichten aan het bekijken - 1 tot 18 (van in totaal 18)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.