PHP/MySQL - Sessions - Eine Session füllen
1. Die Abschnitte
- Überblick
- Eine Session starten
- Eine Session füllen
- Eine Session killen
- Die Session-ID
- Generelle Tipps
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