[PHP] Sessie wordt niet onthouden

Pagina: 1
Acties:
  • 138 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • skate master
  • Registratie: September 2004
  • Nu online

skate master

Autodesk Educator Expert

Topicstarter
Hoi.

op mijn website heb ik een dynamisch formulier staan.
Dit formulier wordt opgebouwd vanuit een database.
In de database staan dan de vragen met daarbij het soort van input element (text, radio, textarea etc)
Bij het maken van de formulieren is het mogelijk een formulier te verdelen
in verschillende pagina's. Dit gaat prima, echter een probleem de sessie wordt niet onthouden.
Ik wil de user input tijdelijk opslaan in sessie variabelen om zo aan het eind van het formulier
de data in de database te stoppen zodat er geen half afgeronde formuliere in de db komen.
Wanneer form1 verzonden wordt, komt de data van form1 netjes in de sessie.
Wordt dan form2 verzonden, dan wordt de data van form1 in de sessie overschreven.
Iemand enig idee hoe dit kan.
Hieronder de code van het doorlopen van de submit array en dan de waardes opslaan in de sessie.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?
session_start(); 
// kijken of alle verplichte velden zijn ingevuld. 
if(isset($_POST['submit'])){ 
    foreach ($_POST as $sleutel => $waarde_sleutel) { 
        if(($sleutel == "VraagVerplicht") OR ($sleutel == "submit") OR ($sleutel == "voltooid")){ 
            // niets doen, deze moeten niet opgeslagen worden. 
        } else { 
            // wel opslaan 
            $_SESSION[$sleutel] = $waarde_sleutel; 
            //echo $sleutel." => ".$waarde_sleutel; 
        } 
    } 
    echo "<pre>"; 
    echo print_r($_SESSION); 
    echo "</pre>"; 
}

Hier nog ff de print_r output van form1 en form2

De print_r($_SESSION) NA form 1 geeft
code:
1
2
3
4
5
6
7
Array 
( 
    [PHPSESSID] => 5cb3ef7321577f9c00209a851e82090d 
    [12] => 1983 
    [13] => Man 
    [vermeld] => Lid 
)


De print_r($_SESSION) NA form 2 geeft
code:
1
2
3
4
5
6
7
Array 
( 
    [PHPSESSID] => 5cb3ef7321577f9c00209a851e82090d 
    [15] => Zeer goed, lekker gezellig 
    [16] => asdf 
    [17] => asdf 
)


Heb voor dit probleem google en got al afgezocht, echter geen resultaat geboekt.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

De sessie-id wordt zo te zien wel goed onthouden en doorgegeven door de client dus dit is waarschijnlijk een serverside probleem, mogelijk zelfs een configuratie-probleem (bijvoorbeeld verkeerde instelling voor je session.save_path of geen schrijf-rechten in die dir) - je vemeld echter niet of je dit probleem lokaal hebt of bij een of andere hoster.

Ik probeer het eerst eens in Programming voor je ;)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • skate master
  • Registratie: September 2004
  • Nu online

skate master

Autodesk Educator Expert

Topicstarter
Ow sorry dacht dat ik het in het goede forum gepost had.

Het probleem doet zich lokaal voor. Heb het nog niet bij de hosting kunnen testen,
maar zal dit morgen wanneer ik thuis ben even doen.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

skate master schreef op zaterdag 08 april 2006 @ 23:32:
Ow sorry dacht dat ik het in het goede forum gepost had.
Denken is één ding, maar lezen kan ook geen kwaad. ;)
Waar hoort mijn topic?
Het probleem doet zich lokaal voor. Heb het nog niet bij de hosting kunnen testen,
maar zal dit morgen wanneer ik thuis ben even doen.
Als het zich alleen lokaal voordoet, dan heb je misschien wat aan dit topic van een paar dagen geleden:
[rml][ PHP] Sessies werken lokaal niet[/rml]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Peter
  • Registratie: Januari 2005
  • Laatst online: 13-09 17:10
Vooral deze post is interessant;
Oke het werkt weer.... In m'n php.ini stond:

session.cookie_path = \

Die backslash heb ik verandert naar een /.
Loop je configuratie eens na, niet alleen dit punt, alles :) Misschien zou je de configuratie (php.ini) van je webhost eens kunnen opvragen om het lokaal testen zo accuraat als mogelijk te maken.

Acties:
  • 0 Henk 'm!

  • skate master
  • Registratie: September 2004
  • Nu online

skate master

Autodesk Educator Expert

Topicstarter
-NMe- schreef op zaterdag 08 april 2006 @ 23:37:
Als het zich alleen lokaal voordoet, dan heb je misschien wat aan dit topic van een paar dagen geleden:
[rml][ PHP] Sessies werken lokaal niet[/rml]
Dat topic had ik gezien, echter staat dit bij mij goed.

Heb het nu ff bij mn host getest, en daar werkt het ook niet.
Dus het probleem doet zich niet alleen lokaal voor, maar ook bij mijn host!

Ook de phpinfo bij mn host bekeken, maar volgens mij staat daar alles ook goed.
Afbeeldingslocatie: http://www.roynijkamp.nl/phpinfo.jpg

[ Voor 13% gewijzigd door skate master op 09-04-2006 11:32 ]


Acties:
  • 0 Henk 'm!

  • skate master
  • Registratie: September 2004
  • Nu online

skate master

Autodesk Educator Expert

Topicstarter
Maar ff een schopje.
Ik hoop dat er iemand is wie de oplossing weet, cq mij een duw in de goede richting kan geven.
Eventueel een andere oplossing dan met sessie is ook welkom.

Acties:
  • 0 Henk 'm!

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 05-10-2024
Werk je met frames?

Acties:
  • 0 Henk 'm!

  • skate master
  • Registratie: September 2004
  • Nu online

skate master

Autodesk Educator Expert

Topicstarter
Nee, ik werk zonder frames

Acties:
  • 0 Henk 'm!

  • ZroBioNe
  • Registratie: Augustus 2001
  • Niet online
Komt de waarde van $sleutel in form1 niet nog een keer voor in form2?

Acties:
  • 0 Henk 'm!

  • skate master
  • Registratie: September 2004
  • Nu online

skate master

Autodesk Educator Expert

Topicstarter
nee, $sleutel is altijd uniek.
$sleutel is de index uit de tabel, deze index staat op auto_increment en is de primary key
Dus een dubbele waarde is uitgesloten.

Acties:
  • 0 Henk 'm!

  • ZroBioNe
  • Registratie: Augustus 2001
  • Niet online
Kan je ook de complete code posten?
Misschien ligt het aan iets wat er nu niet staat...

Acties:
  • 0 Henk 'm!

  • Xorgye
  • Registratie: Maart 2005
  • Laatst online: 05-10-2024
Voeg dit ff toe en kijk naar t resultaat...
if(isset($_SESSION[$sleutel])) echo "je gaat een waarde overschrijven";

Op deze plek:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?
session_start(); 
// kijken of alle verplichte velden zijn ingevuld. 
if(isset($_POST['submit'])){ 
    foreach ($_POST as $sleutel => $waarde_sleutel) { 
        if(($sleutel == "VraagVerplicht") OR ($sleutel == "submit") OR ($sleutel == "voltooid")){ 
            // niets doen, deze moeten niet opgeslagen worden. 
        } else { 
            // wel opslaan 
            if(isset($_SESSION[$sleutel])) echo "je gaat een waarde overschrijven";
            $_SESSION[$sleutel] = $waarde_sleutel; 
            //echo $sleutel." => ".$waarde_sleutel; 
        } 
    } 
    echo "<pre>"; 
    echo print_r($_SESSION); 
    echo "</pre>"; 
}



Het klinkt toch echt alsof je iets overschrijft hoor...

[ Voor 13% gewijzigd door Xorgye op 10-04-2006 13:35 ]


Acties:
  • 0 Henk 'm!

  • dennis112
  • Registratie: Oktober 2003
  • Laatst online: 11-09 00:25
Sla je de gegevens niet 2 keer in dezelfde sessie op met dezelfde naam. Hernoem die 2de sessie eens naar iets anders en niet hetzelfde als je bij die eerste sessie hebt.

Edit: Post je hele script even, dan hebben we het probleem zo gevonden denk ik.

[ Voor 21% gewijzigd door dennis112 op 10-04-2006 13:38 ]

Asus P6T Deluxe, Intel Core i7 920, 6Gb 1333Mhz DDR3, 2 x Sapphire HD5830 in Crossfire


Acties:
  • 0 Henk 'm!

  • skate master
  • Registratie: September 2004
  • Nu online

skate master

Autodesk Educator Expert

Topicstarter
Xorgye schreef op maandag 10 april 2006 @ 13:33:
Voeg dit ff toe en kijk naar t resultaat...
if(isset($_SESSION[$sleutel])) echo "je gaat een waarde overschrijven";
Gedaan, er verschijnt geen melding van overschrijven!
Begrijp er geen zak meer van. :(

Acties:
  • 0 Henk 'm!

  • ZroBioNe
  • Registratie: Augustus 2001
  • Niet online
Probleem lijkt vaker voor te komen: http://nl2.php.net/manual/en/function.session-register.php#47574

Probeer het eens met strings ipv integers als $sleutel

Acties:
  • 0 Henk 'm!

  • skate master
  • Registratie: September 2004
  • Nu online

skate master

Autodesk Educator Expert

Topicstarter
ZroBioNe schreef op maandag 10 april 2006 @ 13:44:
Probleem lijkt vaker voor te komen: http://nl2.php.net/manual/en/function.session-register.php#47574

Probeer het eens met strings ipv integers als $sleutel
Dat was de oplossing.
Heb nu voor iedere $sleutel bestaat nu uit een string + integer en nu werkt het wel.
Bedankt.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Ik denk dat eea te maken heeft met register_globals; zo is met register_globals aan $_SESSION['foo'] hetzelfde als $foo, en dus zal $_SESSION[12] eigenlijk gelijk moeten zijn aan $12 - ware het niet dat dat een ongeldige variabele-naam is :)

Intentionally left blank

Pagina: 1