Array in $_SESSION wird überschrieben

S

sevY

Hi,

ich registriere einen Array in einer PHP Session:

PHP:
<?php
session_start();

if(isset($_GET['interesse']) && isset($_GET['wertung'])) {

   $_SESSION['profile'][$_GET['interesse']]=$_GET['wertung'];
      

}

?>

Auf meinen Testsystem (Apache 1.3, PHP 4) erhalte ich dann korrekterweise einen multidimensionalen Session-Array.

var_dump($_SESSION['profile']) gibt mir dann soetwas aus:

array(3) { ["x"]=> string(1) "3" ,["y"]=> string(1) "4",["z"]=> string(1) "5"}


Demnach werden die 2. Dimension des Arrays korrekt geschrieben.



Wenn ich das jetzt aber auf meinem Produktivsystem (Debian 3.1 Sarge, Apache2, PHP4) laufen lasse, wir der Array immer komplett überschrieben, sodass zwar eine 2. Dimension vorhanden ist – jedoch mir nur einem Element.

Entweder:
array(1) { ["x"]=> string(1) "3" }

oder:

array(1) { ["y"]=> string(1) "4" }

oder:

array(1) { ["z"]=> string(1) "5" }


Aber nie alle zusammen.

Woran kann das liegen?
 
das klingt nach voodoo... :)

könnte es sein, dass du in deinem browser cookies deaktiviert hast und der live-server die session-id nicht parsed (session_transid false)? dann würde nämlich bei jedem aufruf eine neue session gestartet werden. lass dir mal zur kontrolle die session-id bei jedem aufruf ausgeben...
 
Mal 'ne Frage zum Session-Handling. Werden auf dem Produktivserver evtl. die Sessions nicht nach dem Default von PHP gespeichert? Stichpunkt session.save_handler = user (php.ini)
Hier scheint nämlich ein Bug in PHP zu schlummern. Ich habe die Erfahrung gemacht dass PHP in dem Fall Probleme mit mehrdimensionalen Arrays hat. Die Session-Werte werden in manchen Fällen von PHP nicht korrekt zur Verfügung gestellt und falsch abgespeichert.

Ansonsten hatte ich unter manchen Systemen auch schon Probleme mit dem Registrieren von Session-Variablen auf die Weise wie Du es machst. Da half dann bei mir auch nur der Weg über session_register().
 
im Zweifelsfall ist bei PHP immer ein Blick auf die Versionsnumemrn anch dem Punkt hilfreich! Auch gilt es die Angaben aus der php.ini genau zu betrachten ( register globals, gpc,...)
 
Zurück
Oben Unten