Allgemeines Mit HTML Formularen, einem PHP Programm und einer Nutzerdatenbank lässt sich schnell eile Loginprozedur schreiben. Das Problem dabei ist, das der Login bei der nächsten Serveranfrage des Clients wieder "vergessen" ist. Der Server kann, da HTTP ein zustandsloses Protokoll ist, nicht erkennen ob eine Anfrage vom selben Client oder von einem neuen Nutzer erfolgt. Lösungswege:
Eine Session hat stets eine ID, anhand der sie unterschieden werden kann und verschiedene Inhalte (Variable), die mit ihr gespeichert werden. Die Speicherung der Inhalte kann alternativ an zwei Stellen erfolgen, je nach der Einstellung der Servers bzw. des Clients:
Die Sessionverwaltung ist ein eigenes Modul in PHP und kann mit Hilfe der php.ini konfiguriert werden. Folgende Felder stehen zur Verfügung:
Befehle Session anlegen Beim Start einer Session wird geprüft ob sie vorhanden ist oder nicht. Wenn nicht, wird sie angelegt. Dies geschieht mit session_start(); Die Session kann ausgelesen werden mit session_name(); session_id(); gelöscht wird sie mit session_destroy();
Zum Anlegen von Vatiablen in der Session wird der Name der Variable (nicht die Variable selbst!) übergeben. $_SESSION['variablenname'] = "text"; löschen der Variablen session_unregister('variablenname'); um zu testen ob die Variable bereits existiert session_is_registered('variablenname');
serialisieren von Daten (z.B. Arrays) session_encode(); und deserialisieren session_decode(); Weitergabe des Sessions Zuerst versucht das Modul die Session ID im Cookie abzulegen, wenn der Client dies zulässt und der Server entsprechend konfiguriert ist. Die Session ID wird an jeden im HTML-Dokument bedindlichen Link angehängt und in jedes Formular als hidden-Field eingefügt. Der Programmierer braucht sich darum nicht kümmern. Bei Weiterleitungen mit der header()-Funktion, wie auch in JavaScript Funktionen, muss man sich um das Anhängen der Session-ID selbst kümmern.
session_start(); Beispiel ################################ INDEX.HTML <html> <head> <title> login </title> </head> <body> <form action="ausgabe1.php" method="post"> Account: <input type="text" name="account"><br> Passwort: <input type="password" name="passwort"><br> <input type="submit" name="log-in"><br> </form> </body> </html> ################################ AUSGABE1.PHP <? session_start(); ?> <html> <head> <title> session anlegen </title> </head> <body> <? $passwort = $_POST['passwort']; $account = $_POST['account']; $name = session_name(); $id = session_id(); echo $name."=".$id."<br>"; $_SESSION['passwort'] = $passwort; $_SESSION['account'] = $account; ?> <hr><a href="ausgabe2.php">weiter</a> </body> </html> ################################ AUSGABE2.PHP <? session_start(); ?> <html> <head> <title> ausgabe2 </title> </head> <body> <? $passwort = $_SESSION['passwort']; $account = $_SESSION['account']; echo "Hier der Zugang:<br>"; echo 'Account: '.$account."<br>"; echo 'Passwort: '.$passwort."<br>"; ?> <hr><a href="ausgabe3.php" target="_blank">weiter</a> </body> </html> ################################ AUSGABE3.PHP <? session_start(); ?> <html> <head> <title> ausgabe2 </title> </head> <body bgcolor="#AAFFAA"> <? $passwort = $_SESSION['passwort']; $account = $_SESSION['account']; echo "Hier der Zugang:<br>"; echo $account."<br>"; echo $passwort."<br>"; session_destroy(); ?> <hr><a href="ausgabe2.php">weiter</a> </body> </html> |