Session ID in PHP
Bisher haben wir Variablen entweder über ein Formular über die POST Methode geschickt oder Variablen
an die URL gehängt. Diese waren dann natürlich in der URL sichtbar! Es macht natürlich keinen Sinn Benutzerdaten
inkl. Passwort über GET auf eine andere Seite zu übertragen, wenn diese Daten in der URL sichtbar sind.
Die Lösung um Benutzer auf einer Homepage seitenübergreifend identifizieren zu können, heißt Session ID.
So bald ein User die Homepage betritt bekommt er eine eindeutige Session ID. Wann er diese Session ID erhält,
kann mal beliebig definieren (vor od. nach erfolgreichem einloggen). Diese eindeutige Session ID begleitet den
User über die gesamten Seite (Links) dieser Domäne. Die Session ID kann über verschieden Methoden auf eine
andere Seite mitgegeben werden. Meisten wird Sie jedoch über GET an die URL gehängt. Dies sieht dann
folgendermaßen aus:
http://localhost/test/session/variante3/ausgabe1.php?PHPSESSID=d77a4f704b938b240e4228a7e0847895
Für die Übertragung der Session ID gibt es weitere Möglichkeiten. Dazu später mehr. Dieser Session ID kann man
beliebig viele Variablen (u.a. Benutzerdaten) zuweisen. In der URL sieht man diese Variablen nicht, hier ist weiter-
hin nur die Session ID sichtbar!
Start der Session ID
Beim Start der Session ID muss man sich im klaren sein, wann eine Session exakt gestartet werden soll. So kann man die
Session ID gleich beim betreten der Webseite od. z.B. erst nach erfolgreichem einloggen starten. Hierfür gehen wir später
noch intensiver drauf ein:
Eine Session ID wird mit folgender Funktion gestartet:
<?
session_start();
?>
Es ist darauf zu achten, dass die Session nach Möglichkeit vor allem anderen gestartet wird, damit alle Teile des Scriptes darauf
zugreifen können. Auch vor Beginn des HTML Codes!!!
<?
session_start();
?>
<html>
<head>
<title>Selfhtml</title>
</head>
Verknüpfung Variablen an die Session ID
Wie bereits angesprochen kann man der Session ID beliebig viele Variablen zuweisen, so z.B. eine Benutzerkennung. Hierfür
steht uns wiederrum, wie bei der Post u. Get Methode ein Array zur Verfügung.
$_SESSION[‘benutzer’] = „okei“;
Bei dem Indexschlüssel handelt es sich um einen String. Diesen kann man beliebig definieren!
Übergabe der Session ID
Für die Übertragung der Session ID von Script zu Script gibt es 3 Möglichkeiten:
1. GET – Die einfachste Möglichkeit ist es, die Session-ID über die URL mitzugeben. Die URL könnte dann so aussehen.
echo “<a href=http://localhost/test/session/variante1/ausgabe1.php?” . session_name() . “=” . session_id() . “>ausgabe1</a>”
bzw.
http://localhost/test/session/variante3/ausgabe1.php?PHPSESSID=d77a4f704b938b240e4228a7e0847895
Diese Mehotde wird meisten, dann verwendet wenn es sich um Links auf der Seite handelt.
2. POST – Man kann die Session ID auch über ein Formular übertragen. Hierfür gibt es wiederrum 2 Möglichkeiten:
1. In dem action-Attribut des form-Elements kann man das Ziel-Script angeben. Dort kann man auch die Session-ID anfügen
Dies entspricht dann wieder der GET Methode, obwohl das Script über POST gesendet wird.
<?
// die URL mit Session Name u. Session ID wird zusammengesetzt
$link = “pruefen.php” . “?” . session_name() . “=” . session_id();
echo $link;
?>
<form action=<?echo $link;?> method=”post” name=”Person”>
<input type=”text” name=”user” value=”” size=15><br>
</form>
2. Im Formular fügt man ein hidden-input-Feld ein. Somit wird die Session-ID als pseudo-Formular-Eingabe gesendet.
<form action=”pruefen.php” method=”post” name=”Person”>
<input type=”text” name=”user” value=”” size=15><br>
<input type=”hidden” name=<?echo session_name();?> value=<?echo session_id();?>><br>
</form>
3. COOKIE – Das PHP Script kann auch die Session-ID in einen Cookie beim Client speichern lassen.
Der Browser sendet dann immer die Session-ID bei jedem aufruf.
Leave a Reply