Hauptmenü

Untermenü

PHP/MySQL - Sessions - Eine Session füllen

1. Die Abschnitte

2. Tiefe Einblicke

Wenn ihr ein lokales Testsystem habt, so schaut mal spaßeshalber in die die erzeugte Sessiondatei. Wo ihr die findet, hab ich ja schon beim Überblick gesagt. So, nun kommt die erste Enttäuschung, die ist nämlich leer. Und das ist auch gut so.

3. Das superglobale $_SESSION

Hiermit läuft die gesamte Bearbeitung von Sessions ab. Der Aufbau der Inhalte wird dabei intern als ein wie auch immer geartetes Array organisiert. Um euch das zu zeigen, probiert mal folgenden Code aus.


<?php
  session_start();
  $_SESSION['bla']     = 'blubb';
  $_SESSION['Blubber'] = 'laber';
?>


Und jetzt öffnet mal die erzeugte Session-Datei. Dann werdet ihr folgenden Eintrag finden.


bla|s:5:"blubb";Blubber|s:5:"laber";

Erläuterung

Eigentlich ist das hier doch ziemlich "overdressed", wenn es um die Verarbeitung von Sessions geht. Ich mache es trotzdem. Zumal ihr ja auch sicher schon in die Sessiondatei reingelinst habt. Also, wir haben eine Art von Array mit den zwei assoziativen Indizes bla und Blubber. Also bitte auch auf die Groß- und Kleinschreibung achten! Die selber haben nun jeweils einen Eintrag. Das s steht für String (Zeichenkette) und die Zahl für die Länge desselben. Danach folgt dann der Inhalt.

4. Ausgabe

Eigentlich sollte dieser Hinweis völlig überflüssig sein, aber vielleicht gibt es den einen oder anderen Vollhonk, der es immer noch nicht begriffen hat. Einen Überblick über den Inhalt einer Session erhält man wie bei Arrays auch über das hinlänglich bekannte print_r.


<?php
  session_start();
  $_SESSION['bla']     = 'blubb';
  $_SESSION['Blubber'] = 'laber';
  print_r($_SESSION);
?>


Also!

Wer hier noch immer nicht klar kommt, sollte sich zuerst mal mit Arrays auseinandersetzen, denn wenn diese Kenntnisse fehlen, so begreift man auch die Sessionverarbeitung nicht.

5. Ein Hinweis

Im Gegensatz zu den globalen (oder superglobalen) Arrays wie $_GET oder $_SERVER kann man sie beliebig tief verschachteln. Gut, das geht auch bei $_POST, ist da aber nicht unbedingt zu empfehlen. Zumindest nicht ab einer gewissen Tiefe.

Ein einfaches Beispiel


a.php
<?php  
  session_start();
  $_SESSION['bla']['blubb'] = 'blubber';
  $_SESSION['bla']['laber'] = 'jodelblah';
  header("location: b.php");
?>
b.php
<?php
  // session_start auf KEINEN FALL vergessen!!!
  session_start();
  print_r($_SESSION);
?>


zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt