develnet.org
Current user:   guest   Change    Preferences 
 List directory   History   Similar   Print version 
Home 
coWiki 
   coWiki download 
vividsites 
Tech 
   Tutorials 
   Techlinks 
People 
Speaker's Corner 
Best of Usenet 
   dclp 2004 
   dclp 2003 
   dclp 2002 
   dclp 2001 
   dclp 2000 
This and that 

Do you like coWiki?
Please donate to keep coWiki a free software
Keep it a free software!
Tech > Tutorials > Sessions mit PHP - Grundlagen und Howto > Was ist eine Session-ID? Wo werden Sessiondaten gespeichert?

 
rw-rw-r--   dtg   tutor

Was ist eine Session-ID? Wo werden Sessiondaten gespeichert?

Die Session-ID - es ist eine zufällige Zeichenfolge - wird serverseitig generiert und wird beim allerersten Response des Webservers an den Browser geschickt, der sie dann speichert. Üblicherweise wird eine Session-ID in Cookies abgelegt, da der Browser bei jedem Request automatisch den Inhalt des Cookies an den Webserver schickt der ihn gesetzt hat.

Dies bedeutet, dass sich der Programmierer der serverseitigen Software theoretisch keine Sorgen machen muss, wie die Session-ID vom Browser wieder zurück zum Webserver kommt, da diese Arbeit automatisch vom Browser erledigt wird.

Cookies sind nichts anderes als menschenlesbare Textdateien, in denen ein Webserver spezifische Daten auf der lokalen Platte des Benutzers ablegen kann. Diese Daten sind u.U. recht kryptisch gehalten, so daß meistens nur der Autor der serverseitigen Software - die den Cookie gesetzt hat - weiß, wie diese Cookie-Daten zu interpretieren sind.

Dies ist aber für uns irrelevant und soll uns nicht weiter beschäftigen, denn wir wollen feststellen, daß die Größe des Cookie - per Definition - ca. 4000 Zeichen nicht überschreiten darf (wovon wir ca. 40 Zeichen benötigen), und dass es zwei Arten von Cookies gibt:

  • "Persistente Cookies" werden für einen definierten Zeitraum (Gültigkeitsdauer) auf der Festplatte des Benutzers als normal lesbare Textdatei gespeichert. Dieser Zeitraum kann sich von wenigen Minuten bis mehreren Jahren erstrecken.
  • Die Lebensdauer der "temporären Session-Cookies" beschränkt sich auf die Lebensdauer des Browser-Fensters. Wird dieses geschlossen, wird auch der temporäre Cookie verworfen. Dieser Cookie wird üblicherweise nicht auf der Festplatte gespeichert; er residiert im Arbeitsspeicher des Rechners.

In der Standardeinstellung benutzt PHP 4 die zweite Variante - die temporären Cookies - um Session-IDs zu speichern. Im Cookie wird der Name der Session und die bereits erwähnte zufällige Zeichenfolge der Session-ID gespeichert. Der Name der Session ist eine frei wählbare Bezeichnung, die uns später als Variable bei der Auswertung der Sessiondaten im PHP-Script zu Verfügung stehen wird. Per Voreinstellung lautet der Name der Variable bei PHP 4: PHPSESSID. Die Länge der von PHP 4 produzierten Session-ID beträgt 32 Zeichen.

Als Ergebnis können wir annehmen, dass bei der Initialisierung einer Session, PHP einen Cookie mit etwa dem folgenden Inhalt beim Benutzer hinterlegt:

PHPSESSID=edb0e8665db4e9042fe0176a89aade16

Der linke Teil des Strings wird als Sessionname und der rechte - die zufällige Zeichenkette "edb0e8665db4e9042fe0176a89aade16" - als Session-ID bezeichnet.

Diese Session-ID ist der Schlüssel zur Wiedererkennung des Benutzers und zur Restaurierung der von ihm gesetzten Daten. Die Session-ID repräsentiert bei PHP 4 - per Voreinstellung - eine temporäre Datei im Filesystem des Servers. Auf unixoiden Betriebssystemen wird die PHP-Sessiondatei standardmäßig im Verzeichnis /tmp/ erstellt. In der php.ini - der globalen Konfigurationsdatei - oder ein der Webserverkonfiguration läßt sich dieser Wert natürlich verändern.

Diese Session-Datei bekommt im Namen den Prefix sess_, so dass das Ergebnis im Filesystem des Servers folgendermaßen aussehen kann:

goosh@warpcore:~> ls /tmp/ -l
insgesamt 0
-rw------- 1 wwwrun www 0 Apr 17 18:00 sess_edb0e8665db4...

In dieser Datei kann ein PHP-Script Benutzerdaten ablegen - z.B. die Artikelnummer und die Anzahl der bestellten Artikel für einen Warenkorb oder einfach nur ob ein Benutzer sich authorisiert hat und Zugriff auf eine Webseite hat.

Dadurch dass der Browser den Inhalt des Cookies bei einem Request mitschickt, ist es möglich den Benutzer über mehrere Webseiten zu authentifizieren oder die vom Benutzer gesetzten Variablen von einer Seite auf eine andere zu übernehmen.

Die Manipulation dieser Session-Datei bleibt nur dem serverseitig ausgeführtem PHP-Script vorbehalten. Der Client weiß nicht welche Daten von dem Script gespeichert werden und er kann keinen mittelbaren Einfluß auf diese Daten nehmen. Ausnahme bildet hier die Änderung oder Löschung dieser Daten durch den Administrator oder durch ein auf dem Server laufendes Script mit entsprechenden (Datei-)Rechten.


Merke:

  • In der Voreinstellung benutzt PHP 4 temporäre Cookies um Session-IDs zu speichern.
  • Defaultname der Session ist PHPSESSID.
  • Eine mit PHP 4 generierte Session-ID ist 32 Zeichen lang (MD5 digest).
  • Sessiondateien werden im Ordner /tmp/ gespeichert.
  • Sessiondateien können nur serverseitig geändert werden.


Reference Was ist eine Session-ID? Wo werden Sessiondaten gespeichert?
http://develnet.org/Tech/WasIstEineSessionIDWoWerdenSessiondatenGespeichert


Prev. Wozu Sessions?   Die wichtigsten Session-Funktionen Next
 


Home | coWiki | vividsites | Tech | People | Speaker's Corner | Best of Usenet | This and that

© 1999-2005 Daniel T. Gorski and contributing authors. All times are GMT +01:00
Driven by coWiki 0.3.3 (Beryllium) web collaboration tool.