[PHP] $_SESSION lijkt te veranderen bij foreach();

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • iain
  • Registratie: Februari 2001
  • Laatst online: 19-07-2017

iain

Full Flavor

Topicstarter
Ik ben momenteel bezig met een online-winkeltje voor handgemaakte poppenkleertjes (don't ask!). Daar stop ik de kleertjes (pakjes) die aan de bestellijst toegevoegd worden in een session. En wel zo: $_SESSION["pakje"][$pakjeID] = true; Dat zal misschien niet de beste methode zijn, maar dat doet nu niet ter zake.

Als een pakje in een session zit, dan ziet het er zo uit (dmv print_r();)
code:
1
2
3
4
5
6
7
8
Array
(
    [pakje] => Array
        (
            [3] => 1
        )

)


Als ik nu een pakje in mijn bestellijst heb staan, en dan nog een keer het overzicht van de pakjes in de database wil zien (SELECT * FROM pakjes), en dan door middel van een foreach statement de pakjes nog iets wil bijschaven voordat ik ze laat zien, dan doe ik dat met deze code:
PHP:
1
2
3
4
5
6
7
echo "woei";
arrays($_SESSION);
foreach ($pakjes as $pakje) {
    echo "blaat";
    arrays($_SESSION);
    // hier komen wat losse statements;
}

de functie arrays is eentje die niet veel meer doet dan print_r met <pre></pre> erom heen en een grijze achtergrond...
En dit is mijn resultaat:
Afbeeldingslocatie: http://www.iain.nl/sessionprobleem.gif

Zoals je ziet verandert de inhoud van de session ineens naar de inhoud van een pakje! Maar de énige regel waarop dat zou moeten gebeuren is op de foreach();

Wanneer gebeurt dit:
- als er iets staat in $_SESSION. Als deze (standaard) leeg is, dan verandert hij ook niet.
- Het gebeurt alleen op mijn online webserver (PHP-versie 4.3.9), en niet op mijn eigen machine (PHP-versie 4.3.6)...

EDIT: en mijn vraag is: waarom? wat doe ik fout? hoe moet het dan?
en ja, ik heb gegoogled, ge-GoT-searched en op php.net gekeken, maar geen probleem/oplossing gevonden die hier over leek te gaan, maar misschien gebruik ik wel de verkeerde zoektermen...

[ Voor 11% gewijzigd door iain op 17-11-2004 23:20 ]

I used to be an atheist, until I realised I was god.


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 15:29

crisp

Devver

Pixelated

Als register_globals op ON staat krijg je inderdaad dat soort problemen wanneer je een variabele hetzelfde noemt als een index van je sessie:
PHP:
1
2
3
$_SESSION['pakje'] = 1;
$pakje = 2;
echo $_SESSION['pakje']; // 2

dat is omdat $_SESSION['pakje'] en $pakje in feite dezelfde namespace sharen met register_globals op ON.

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • iain
  • Registratie: Februari 2001
  • Laatst online: 19-07-2017

iain

Full Flavor

Topicstarter
Juist... hartstikke bedankt voor het snel en doeltreffend reageren... _/-\o_

Je wilt niet weten hoe lang ik gezeten heb op dit probleem, aangezien in eerste instantie de webserver bleef hangen op eindeloos herhalende query, dat voortvloeide uit dit probleem... En het is ook zo makkelijk bugfixen als je bij elke wijziging het bestand weer moet uploaden.... :X

I used to be an atheist, until I realised I was god.