Session Variablen

Sam19

Grünschnabel
Hallo zusammen,

habe ein Problem mit der Zuweisung von Session-Variablen. Vorab das Script zur Veranschaulichung:

Code:
...
$test = mysql_fetch_array($result);
$_SESSION['test'] = $test;

/*
  Alternativ (funtioniert genau so wenig):
  foreach( $test as $k => $v) {
    $_SESSION['test'][$k] = $v;
  }
  */

print_r($_SESSION);  // Alles OK, Daten in Session gespeichert
$test = null;
print_r($_SESSION);  // Key 'test' in der Session ist leer/null
...

Nach einem Refresh sind die Daten NICHT in der Session (egal, ob ich $test auf null setze oder nicht!).

Sieht so aus als ob er Referenzen erstellt oder so etwas...
Kann mir das irgendjemand erklären? Vielen Dank schonmal!

Grüße
Sam
 
Ja, schön wärs! ;-)

wird natürlich ganz oben im Script aufgerufen...

Ich muss dazu sagen, daß ich seit einigen Jahren beruflich PHP programmiere...
Also entweder ich steh mächtig auf dem Schlauch oder ich hab nen Vollschatten. ;-)

Achja, das Dumme ist, daß es sich um ein fertiges Projekt handelt und es sich nicht um meinen Code handelt...
 
Zuletzt bearbeitet:
Das wird schon richtig gesetzt sein, da ich in anderen Scripten keinerlei Probleme habe...
Komisch ist aber, daß in diesem Script die Session-Variable absolut identisch gesetzt wird wie sonst überall auch...

Was ich aber nicht verstehe ist, warum sich das $test = null; auch auf $_SESSION auswirkt...:suspekt:
 
Hm.

kann es sein, dass in den "anderen Scripen" ein session_save_path definiert wird?
Hast Du eventuell irgendwo ein session_destroy(); oder unset(); eingebaut?

Wenn Du $test resettest, dann dürfte die Session-Variable nicht gelöscht werden, außer Du hast es versehentlich als Referenz zugewiesen:
$_SESSION['test'] = &$test;

Und gib doch mal bitte ein
echo session_save_path();
aus ...

Gruß tyg3r
 
Schlägt denn beim erneuten Aufruf die Datenbankabfrage fehl beziehungsweise liefert keinen Datensatz? Anders kann ich mir dieses Verhalten nicht erklären.
 
@Tyg3r: session_save_path steht auf /tmp und das gibts auch...sind auch einige (aktuelle) sessions drin.
Und nein, ich habe nicht versehentlich =& verwendet. ;-) Übrigens läuft da PHP 4.2.2. Also sollte (im Gegensatz zu PHP5) doch auf jeden Fall eine Kopie erstellt werden!?

@Gumbo: Also das Script ist etwas komplexer als der gepostete Ausschnitt. ;) Jedenfalls wird die Datenbankabfrage (definitiv) nicht nochmals beim erneuten Aufruf ausgeführt. Die wird nur ausgeführt wenn eine GET-Variable gesetzt ist. Und das ist dann nicht mehr der Fall.
 
Dann kann ich Dir leider ohne weiteren Script nicht helfen :)
Ich vermute eher einen Fehler wie Gumbo ihn beschreibt (Versteckt und hinterhältig :D).

Eventuell mal gezielt prüfen, ob dein Script einen Eintrag im /tmp Verzeichnis erzeugt.
 
Das kann eigentlich alles nicht sein, weil:
Wenn ich im Script ganz unten als aller letztes die Session ausgebe dann sind die Daten da.
Und wenn ich ganz oben direkt nach session_start(); die Session ausgebe dann nicht mehr.

Um genau zu sein: Die Keys sind im Array schon gesetzt, aber die Values nicht!? :confused:
 
Zurück