Derzeit online: ca. 91 User  
Spenden via PayPal PHP für dich ist auch als Buch erhältlich - im handlichen Format, zum Nachschlagen, Mitnehmen oder gemütlichen nebenbei Lesen. Mit noch mehr Informationen, zusätzlichen Beispielen und Übungsaufgaben.
Jetzt in der aktualisierten Version bei Amazon oder BoD bestellen!


PHP

Sessions...

... sind viel einfacher, als man denkt.

Sessions sind eines der mächtigsten Werkzeuge in PHP. Sie sind eigentlich unheimlich einfach aufgebaut und erfordern nur wenige Anweisungen, man kann aber viel mit ihnen erreichen. Sessions helfen dir dabei, Variablen für die gesamte Zeit, die ein User auf deiner Internetseite verbringt, zu speichern. Beim ersten Betreten einer Seite - z. B. index.php - wird die Session für diesen Benutzer gestartet. Du kannst dann Session-Variablen setzen, die auf jeder anderen Seite, auf der du die Session initialisierst und die der Benutzer besucht, ebenfalls zur Verfügung stehen. Wenn dein Besucher sein Browserfenster schließt oder nach Ablauf einer gewissen Zeitspanne in der keine Aktion mehr erfolgt (standardmäßig meistens 30 Minuten) wird die Session beendet und die Variablen werden gelöscht.

Was heißt das jetzt genau und was machen wir überhaupt damit?

Ein sehr klassisches Beispiel für den Einsatz von Sessions wären Seiten mit Login. Man meldet sich einmal mit seinem Benutzernamen und seinem Passwort an und hat dann Zugriff auf alle Seiten, ohne sich noch einmal anmelden zu müssen. Das muss man erst beim nächsten Besuch auf der Seite. Erreicht wird das, indem unsere Zugangsberechtigung in einer sogenannten Sessionvariable auf dem Server gespeichert wird. Wir bekommen zusätzlich eine Session-ID zugewiesen, die unsere Session eindeutig kennzeichnet. Diese Session-ID wird als Cookie auf unserem Computer abgespeichert. Es ist möglich, die Session-ID eines anderen zu übernehmen und dadurch Zugang zu erlangen, auch wenn man keine gültigen Logindaten hat. Einen vollständigen Schutz davor gibt es nicht.

Jetzt aber ans Programmieren.

Die Session startest/initialisiert du mit dem Befehl session_start(). Das musst du auf jeder Seite machen, auf der du Session-Variablen verwenden möchtest und am besten immer ganz am Anfang deiner Programmierung, da davor nichts ausgegeben werden darf. Erst danach kannst du Variablen speziell für deine Session setzen und abrufen. Eine Session-Variable sprichst du immer über $_SESSION["Variablenname"] an - sowohl beim Festlegen, als auch beim Abrufen oder Ändern.

Wir gehen im Beispiel davon aus, dass sich der Benutzer über ein Formular eingeloggt hat und wir bereits geprüft haben, ob er zugriffsberechtigt ist. Jetzt speichern wir diese Zugriffsberechtigung in einer Session. Zusätzlich legen wir eine Sessionvariable an, in der sein Benutzername (der in unserem Beispiel bereits über die Variable $username abrufbar ist) gespeichert wird, damit wir ihn jederzeit benutzen können.
<?php
session_start();
$_SESSION["berechtigter_User"] = 1;
$_SESSION["Username"] = $username;
?>
Auf jeder weiteren Seite, auf der wir die Session durch die Verwendung von session_start() aufrufen, können wir jetzt diese Variablen nutzen. Wir können also z. B. den User begrüßen, ohne erneut seinen Usernamen abfragen zu müssen.
<?php
session_start();
... z. B. weiterer Code ...
echo "Hallo ",$_SESSION["Username"],"!";
?>
Wenn der Username z. B. Franz war, steht dann da Hallo Franz!.

Genauso können wir natürlich auch auf die Sessionvariable berechtigter_User zugreifen und damit am Beginn jeder Seite überprüfen, ob der Benutzer überhaupt auf die Seite darf. Voraussetzung dafür ist wiederum, dass zuerst die Session gestartet wurde.
<?php
session_start();
if($_SESSION["berechtigter_User"] != 1)
{
  echo "Bitte logge dich zuerst ein!";
  ... Loginformular ...
}
else
{
  ... Inhalt der Seite ...
}
?>
Außerdem können wir jederzeit neue Sessionvariablen festlegen, nachdem die Session auf einer Seite einmalig gestartet wurde. Das funktioniert genauso wie oben. Diese Variablen lassen sich aber auch verändern:
<?php
session_start();
... z. B. weiterer Code ...
$_SESSION["bisheriger_Username"] = $_SESSION["Username"];
$_SESSION["Username"] = "Rumpelstilzchen";
?>
Wenn der User jetzt das nächste Mal auf eine Seite kommt, auf der wir ihn begrüßen, steht da nicht mehr Hallo Franz!, sondern Hallo Rumpelstilzchen!. Zugriff auf seinen richtigen Usernamen haben wir aber immer noch, da wir ihn davor in der Sessionvariable bisheriger_Username gespeichert haben.

Um eine Session zu beenden und den User in unserem Fall auszuloggen, müssen wir zuerst alle Daten der Session löschen und danach die Session löschen.
<?php
$_SESSION = array();
session_destroy();
?>
Die Zeile $_SESSION = array(); sorgt dabei dafür, dass alle Sessionvariablen geleert werden. Die zweite Zeile löscht dann erst die Session.

Probiere ruhig ein wenig herum, was Sessions so alles können, du wirst sehen, dass sie dir oft eine große Hilfe sein werden.


Und damit haben wir jetzt eigentlich alle Funktionen, Operatoren etc., die ich persönlich häufig verwende durch. Klar, es gibt noch Funktionen, die hin und wieder verwendet werden oder für spezielle Aufgaben einfach ideal sind, jedoch kannst du diese jederzeit auf php.net nachschlagen und dich dadurch selbst tiefer in das Thema PHP einarbeiten.

Solltest du also eine bestimmte Funktion suchen, wirf bitte einen Blick auf php.net. Dort findest du alle Funktionen, die dir in PHP zur Verfügung stehen (es gibt auch eine Suchfunktion und du kannst sogar meistens die Sprache auf Deutsch umstellen, wenn du die Erklärungen auf Englisch nicht verstehst).

Und wenn du jetzt noch immer mehr lernen möchtest, kann ich dich nur zu einer Runde mySQL einladen :-)

Autor: Claudia Unkelbach
© 2001 - 2017 Claudia Unkelbach
Gießener Straße 75, 35396 Gießen