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 > Wozu Sessions?

 
rw-rw-r--   dtg   tutor

Sessions mit PHP - Grundlagen und Howto

Daniel T. Gorski, August 2000



Wozu Sessions?

Sofern man dieses Tutorial online liest, wird man entweder auf einen Link geklickt, oder die Adresse dieser Seite manuell eingegeben haben. Spätestens dabei wird es (hoffentlich) aufgefallen sein, dass die Adressen der meisten Webseiten mit http:// beginnen.

Die Abkürzung HTTP liest sich "HyperText Transfer Protocol" und ist der Grundstein für das World Wide Web, wie wir es heute kennen - es regelt die Verständigung zwischen dem Client (z.B. Browser) und dem Webserver, der die auf ihm gespeicherten Webseiten zur Verfügung stellt.

In der derzeitigen Implementation (HTTP 1.1), hat das HTT-Protokoll leider einen großen Nachteil: es ist "zustandslos". Vereinfacht bedeutet das:

  • Der Client (Browser) öffnet eine Verbindung zum Webserver, und fragt nach einer Webseite (Request).
  • Der Webserver antwortet (Response) mit dem gewünschten Inhalt (oder einer Fehlermeldung).
  • Der Client empfängt bestenfalls die Daten und stellt sie dar.
  • Die Verbindung zwischen Client und Server wird beendet, es wird kein "Zustand" - keine dauerhafte Verbindung - aufrecht erhalten.

Merke:

  • Das HTT-Protokol ist zustandslos (stateless)
  • Request: die Anfrage des Browsers an den Webserver
  • Response: die Antwort des Webservers auf einen Request

Zunächst klingt diese Verfahrensweise logisch und nicht besonders tragisch, da offensichtlich die angeforderten Daten - wie gewünscht - ihren Weg zum Browser finden. Das Problem für den Programmierer der Webseiten-Logik entsteht erst dann, wenn es nötig wird, den Client von einem Request zum anderem zu identifizieren - d.h. die Requests zu unterscheiden, ob sie vom gleichem Client stammen oder nicht.

Diese Unterscheidung (Authentifizierung) ist schon z.B. bei einer einfachen Warenkorb-Funktion notwendig, damit bestellte Artikel nicht im Warenkorb eines anderen Benutzers landen, der sich zufällig zur gleichen Zeit im gleichem Online-Shop bewegt. Ebenfalls wird diese Unterscheidung notwendig, um ausgewählten Benutzern restriktiven Zugriff auf spezielle Teile einer Website zu erlauben (Authorisierung) z.B. auf Administrationsbereiche oder Bereiche in denen Informationen für einen geschlossenen Benutzerkreis (CUG - closed user group) zur Verfügung stehen.

Eine eindeutige Unterscheidung anhand der IP-Adresse ist - wie es oft landläufig von Neulingen geglaubt wird - nicht möglich bzw. stellt aus der Sicht des Webservers keinen sicheren Weg zu Authentifizierung eines Clients dar, da einerseits mehrere Clients mit der gleichen IP im WWW unterwegs sein können (Masquerading) und andereseits ein Client über mehrere Requests hinweg verschiedene IP-Adressen (Proxies) haben kann. Wie das genau funktioniert ist aber eine andere Geschichte.


Merke:

  • Eine IP ist in unserem Kontext nicht eindeutig.
  • Authentifizierung: Wiedererkennung eines Benutzers.
  • Authorisierung: Überprüfung individueller Zugangsdaten eines wiedererkannten Benutzers und Gewährleistung damit vebundener Rechte.

Die Lösung für das Problem sind sog. Sessions-IDs, eindeutige "Schlüssel", die bei der HTTP-Kommunkation über den Zeitraum einer Sitzung (engl. Session) auf einer Webseite ihre Gültigkeiten behalten.



Reference Wozu Sessions?
http://develnet.org/Tech/WozuSessions


  Was ist eine Session-ID? Wo werden Sessiondaten gespeichert? 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.