© by PHP-guide.de
   Dieses Dokument ist urherrechtlich geschützt. Veröffentlichung, Weitergabe und Duplikation jeglicher Art ist nur mit schriftlicher Genehmigung des Autors gestattet!

 
[ PHP-guide.de - Tutorial: Session Handling ]
Wir versuchen Ihnen mit diesem Tutorial PHP ein Stückchen näherzubringen. Aber: Es hat keinen Anspruch auf Vollkommenheit! Um dieses Tutorial besser zu verstehen, sollten Sie Grundkenntnisse in PHP besitzen - dabei helfen kann Ihnen unsere PHP-Dokumentation.

   Bei Fehlern oder einfach nur um einen Kommentar über dieses Tutorial loszuwerden, würde es mich freuen, wenn Sie mir ein Feedback schicken würden!

  Sessions  
Eine der neuen Eigenschaften von PHP4 ist das sog Session Handling (engl.: Sitzung, Besuch). Mit Hilfe von Sessions können Sie eine beliebige Anzahl von Variablen beliebiger Typen einem bestimmten User zuweisen. Registriert man also z.B. eine oder mehrere Variablen von einer bestimmten Seite aus, so können Sie über die Session ID, einer zufälligen, 32 Zeichen langen Abfolge von Zeichen (Groß-/Kleinbuchstaben und Zahlen), über den ganzen Besuch hinweg auf diese Umgebung zurückgreifen, ohne jede einzelne Variable über hidden-Formularfelder o.ä. an die nächste Seite übergeben zu müssen. Jede einzelne Session wird als ASCII-Dateien im /tmp-Verzeichnis des Servers abgespeichert.

Um mit der Session überhaupt arbeiten zu können, muss diese gestartet werden:
...
session_start();
...
 

Erklärung: Bei dem Befehl session_start() überprüft PHP, ob eine gültige Session ID existiert. Ist keine vorhanden wird eine Session gestartet, deren Session ID ungefähr so aussehen könnte: ax45a3f76f7325099c755b25b3493d5d. Ist bereits eine Session vorhanden, werden die bereits gespeicherten Variablen dem Script wieder zur Verfügung gestellt, d.h. der Befehl muss auf jeder Seite vorhanden sein, da die Variablen ansonsten nicht "ansprechbar" sind.

 
Prinzipiell gibt es dann zwei Möglichkeiten, die Session ID zu für jeden Besucher individuell zu sichern:
1. Der einfachere und idealere Weg wäre die Speicherung in einem Cookie - da aber einige User Cookies kategorisch ablehnen ist diese Lösung in der Praxis unbrauchbar.
2. Die zweite Möglichkeit ist die Übergabe von Seite zu Seite mit Links oder hidden-Formularfelder.

Übergabe per Link:
...
<a href="test.session.php?<?=session_name()."=".session_id()?>">
...
 
Übergabe per hidden-Feld:
...
<form action="test.php4">
<input type="hidden" name="<?=session_name()?>" value="<?=session_id()?>">
...Radiobuttons, Checkboxen und Inputfelder...
</form>
...
 

Erklärung: Um nachher auf die Variablen zugreifen zu können muss die Session ID immer mitgeliefert werden, da sonst eine Identifizierung des Besuchers nicht möglich ist. Die Funktion session_id() gibt diese automatisch aus. Die Funktion session_name() gibt den voreingestellten Namen der Session aus - meistens ist dieser PHPSESSID oder SESSID o.ä., wichtig ist nur, dass Sie z.Bsp. im Hidden-Feld nicht einen beliebigen Variablennamen á la "...name=id ..." eingeben, da PHP die Session ID sonst nicht zuordnen kann.

 
Nachdem die Session jetzt gestartet wurde und die Übermittlung der Session ID klar sein sollte, gehen wir zum registrieren von Variablen über:

Variablen registrieren:
...
session_register("nummer");
session_register("name");

$nummer = 476;
$name = Johannes;
...
 

Erklärung: Die dem Script bekannten Variablen $nummer und $name werden nun zur Session gespeichert und stehen von nun an bei korrekter Übermittlung der Session ID immer zur Verfügung

 
Um diese registrierten Variablen wieder auslesen zu können, wird folgendermassen vorgegangen:

registrierte Variablen auslesen:
...
session_start();

echo "Ihr Name ist bestimmt $name, oder?";
...
 

Erklärung: Mit der korrekter Übermittlung der Session ID und des Session-Namens stehen dem Script die vorher registrierten Variablen $nummer und $name mit der Funktion session_start() wieder als ganz gewöhnliche Variablen zur Verfügung.



Session beenden:
Um eine Session zu beenden gibt es den Befehl session_destroy(). Allerdings nützt dieser meistens nichts, da viele Besucher das Browserfenster einfach schließen und es daher keine Möglichkeit mehr gibt diese Funktion auszuführen. Für dieses Problem gibt es in PHP4 die sog. gc Direktiven (gc = Garbage Collection ~ engl.: Müllsammler). Diese löschen die Session nach einer bestimmten Zeit, nach der zuletzt auf die Session-Datei zugegriffen wurde.
...
session_start();
session_destroy();
...
 

Erklärung: Bei der korrekter Übermittlung der Session ID und des Session-Namens wird die aktuelle Session vom Server gelöscht.

 


[ So viel zum Thema ]
Wenn Ihnen dieses Tutorial gefallen hat, dann schicken Sie mir doch ein Feedback. Wenn Sie weitere Tutorials wünschen, dann teilen Sie mir es einfach mit Themenvorschlag mit.

In diesem Sinne Herzlichst Ihr Johannes E. Kalunka (contact [at] php-guide [dot] de)


© by PHP-guide.de
   Dieses Dokument ist urherrechtlich geschützt. Veröffentlichung, Weitergabe und Duplikation jeglicher Art ist nur mit schriftlicher Genehmigung des Autors gestattet!