Sessions in PHP

PHP Sessions

Wie du vielleicht schon bemerkt hast ist es mit PHP oder besser gesagt mit den Möglichkeiten des HTTP Protokolls nicht möglich Verbindungen eindeutig zu identifizieren. Wenn eine Anfrage abgearbeitet wurde ist sie beendet. Eine Anfrage des selben Clients wird wie eine neue Anfrage behandelt.

 

In manchen Situationen müssen wir aber die Benutzer genau identifizieren, auch über mehrerer Seitenaufrufe hinweg. Ich möchte dich jetzt mal bitten darüber nachzudenken, unabhängig davon wie PHP dieses Problem löst.

Wie könnten wir Daten speichern und diese bei einem weiteren Aufruf wieder herstellen?

 

Hier ein möglicher Lösungsansatz:

  1.  Es wird ein Geheimnis gerneriert, dass so lang ist, das es niemand zufällig erraten kann.

  2. Dieses Geheimnis wird bei jedem Aufruf wieder als Parameter an die URL angehängt. Somit haben wir das Geheimnis bei jedem Seitenaufruf wieder verfügbar. Es wird quasi über die Url "transportiert". Da das Geheimnis nur der aktuelle Client weiss, wissen wir wer die Seite aufgerufen hat.

Das Verfahren zum generieren des Geheimnnisses darf jedoch nicht so simpel sein das ande das Geheimnis leicht erraten können. Es sollten also zum generieren des zufälligen Geheimnisses Parameter genommen werden die nicht ganz einfach zu erraten sind.

Beispiele sind z.b. Zeit in Millisekunden, IP Adresse des aufrufenden, etc.

 

Nun können wir schonmal einen Client eindeutig identifizieren. Aber du kannst dir sicherlich vorstellen das es sehr kompliziert ist, diese Taktik konzequent durchzusetzen. Eine Erleichterung unseres ersten Ansatzes währe es, das Geheimnis in einem Cookie zu speichern.

 

Cookies sind eine Technologie die von Netscape entwickelt wurde. Sie erlauben es kurze Informationen auf den Rechner des aufrufenden zu speichern. Nur die Seite die einen Cookie geschrieben hat darf ihn auch lesen, das soll den Missbrauch verhindern. Cookies geniessen einen schlechten Ruf weil sie angeblich das ausspionieren der Surfer ermöglichen. An dieser Meinung ist jedoch nicht besonderst viel dran.

 

Ähnlich wie wir uns das überlegt haben funktioniert das auch in PHP. PHP besitzt eine eigene Sessionverwaltung. Diese nutzt eine Session-ID zum Identifizieren einer Sitzung.

 

Session in einem PHP Skript starten

Zum starten einer Session gibt es die Funktion session_start(); . Diese muss am Anfang jeder Seite die die Session benutzen soll aufgerufen werden. Dies muss vor der ersten Ausgabe geschehen.

 

 

Variable in einer PHP Session registrieren

Es gibt verschiedene Möglichkeiten Daten in der Session zu speichern. Zum einen die Funktion session_register(); Zum anderen kann man den Superglobalen Array $_SESSION[]; verwenden um neue Werte in der Session zu speichern. Heute wird empfohlen den Array SESSION zu verwenden statt session_register();

 

Beispiel zu PHP Sessions:

Im folgenden Beispiel wird eine Variable in der Session gespeichert die bei jedem Seitenwechseln hochgezählt wird.

Datei session1.php:

<?php
   session_start();
   $_SESSION['counter']++;
   echo $_SESSION['counter'];
?>
<a href="session2.php">++</a> 


Datei session2.php:

<?php
   session_start();
   $_SESSION['counter']++;
   echo $_SESSION['counter'];
?>
<a href="session1.php">++</a> 

Navigation