b-projects

Session ID in PHP
Freitag, den 10. Oktober 2008 um 22:11 Uhr

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.

 

 

 

 

 

Aktualisiert ( Mittwoch, den 09. September 2009 um 16:32 Uhr )
 

Tutorials Übersicht