php, PHP Session, PHP Sessions
Session PHP

Navigation
 Startseite
 Fachbücher
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 
Script Seite

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 ICQ Generator
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog Verzeichnis

Partner
Sprüche Treff

Goneo.de
Bei diesen Anbieter bekommt man Webspace, Domains,...
http://www.Goneo.de
Artfiles.de
Bietet Serviceorientierte Internetdienstleistungen...
http://www.Artfiles.de
 
 

PHP Sessions

Sie befinden sich: Home > Php > PHP Sessions

In diesem Tutorial möchte ich ihnen erklären wie Sie Sessions in PHP benutzen können. Die Sessions werden sehr häufig dazu verwendet, um einen Memberbereich beziehungsweise Administrationsbereich zu realisieren. Da nur der User einen Zugriff auf die Session bekommt, den die Session ID bekannt ist. Dadurch ist es möglich individuellen Inhalt für einen User bereit zu stellen oder diesen mit ein Passwortschutz zu versehen. In PHP wird über den Befehl session_start() eine neue Session generiert.

Wird den Befehl session_start() die Session ID übergeben, greift der Server auf die hinterlegte Datei zu. Wenn eine Session generiert wird, wird ein Text File unter den session.save_path generiert. Den Session Save_Path kann man mit den Befehl session_save_path() ändern. Dazu muss der Befehl vor session_start() ausgeführt werden. Dieses Text File wird unter den Dateinamen Prefix "sess_" und 32 zufällige Zeichen gespeichert. Die 32 Zeichen ist die aktuelle Session ID, dadurch weiß der Server, welche Datei genutzt werden soll. In diesem Text File werden alle Variablen serialsiert gespeichert, die in der aktuellen Session generiert wurden.

Eine Session ist standardmäßig 180 Minuten aktiv, wenn bis dahin die Session nicht wieder benutzt wurde, wird standardmäßig das Text File der Session gelöscht. Dies ist abhängig von der Einstellung in der php.ini unter session.cache_expire. Der Wert session.cache_expire definiert die Ablaufzeit der Session. Man kann auf Wunsch mit new_cache_expire() diesen Wert ändern.

So nunr ein Beispiel zum Starten einer Session:

<?php
session_start
();
?>

Der Befehl session_start() sollte immer in der ersten Zeile eines PHP Scriptes stehen. Der Befehl session_start() gibt true oder false zurück. Sollte die Session nicht gestartet werden können, wird ein false zurückgegeben. Zusätzlich muss der Befehl vor den senden des Http Header vom Dokument ausgeführt werden, da ansonsten eine entsprechende Fehlermeldung kommt und nicht auf die Session zugegriffen werden kann. Daher ist es empfehlenswert mit dem Befehl headers_sent() zu prüfen ob der http Header bereits gesendet wurde.

Man kann alternativ ein @ Zeichen vor dem Befehl session_start() setzen, dadurch vermeidet man eine eventuelle Fehlerausgabe. Damit gegebenenfalls ein Angreifer den Fehler von einer falsch aufgerufenen Funktion nicht zu Gesicht bekommt. Ich würde an dieser Stelle empfehlen mit dem Befehl headers_sent() zu prüfen, ob bereits ein Http Header gesendet wurde und vor session_start() ein @ Zeichen zu setzen.

Beispiel zum prüfen, ob bereits ein http Header gesendet wurde:

<?php
// prüfen ob der HTTP header bereits gesendet wurde
if (headers_sent() == false) {
// HTTP header wurde noch nicht gesendet
@session_start();
}
?>

Nachdem wir nun die Session initialisiert haben, können wir damit beginnen diese mit Inhalt zu befüllen. Hierzu nutzen wir die Servervariable $_SESSION, in dieser werden so genannte Array Elemente abgelegt. Wenn wir nun ein neuen Schlüssel mit einem Wert generieren möchten, müssen wir folgendermaßen die Servervariable ansprechen.

<?php
if (headers_sent() == false) {
@
session_start();
// Nun erstellen wir in der Session ein Schlüssel mit einen Wert
$_SESSION
['username'] = 'Nico Schubert';
}
?>

Wie oben in unserem Beispiel geschrieben, haben wir den Schlüssel "username" mit dem Wert "Nico Schubert" in unserer Session Array: $_SESSION gespeichert. Wenn der Browser Cookies zulässt, wird nun ein Cookie mit der Session ID gespeichert. Nun könnten wir in einer weiteren Seite mit diesen Schlüssel den Inhalt der Session ausgeben. Da nicht immer sichergestellt werden kann, das die Session ID per Cookie gespeichert wird. Sollte man die Session ID über die Konstante SID oder session_id() per GET oder POST übergeben.

Nachfolgend ein Beispiel für die Übergabe:

<?php
if (headers_sent() == false) {
@
session_start();
// Nun erstellen wir in der Session ein Schlüssel mit
einen Wert
$_SESSION
['username'] = 'Nico Schubert';
}
?>

Hier das Beispiel für die Ausgabe. Bitte Speichern Sie die Datei mit den Dateiname: seite2.php

<?php
if (headers_sent() == false) {
if (!isset($_GET['PHPSESSID'])) $_GET['PHPSESSID'] = '';
if (
$_GET['PHPSESSID'] != '') {
@
session_start($_GET['PHPSESSID']);
} else {
@
session_start();
}
if (!isset(
$_SESSION['username'])) $_SESSION['username']
=
'';
if (
$_SESSION['username'] != '') {
echo
'Ihr Username ist: '.$_SESSION['username'];
} else {
echo
'Es konnte kein Usernamer ermittelt werden.';
}
}
?>

Erklärung: In der ersten Zeile prüfen wir ob bereits der HTTP Header gesendet wurde. Wenn dieser noch nicht gesendet wurde, prüfen wir mit isset() ob die GET Variable: $_GET['PHPSESSID'] gesetzt wurde, ansonsten machen wir diese Variable den PHP Script bekannt. In der nächsten Zeile prüfen wir, ob die Variable: $_GET['PHPSESSID'] einen Wert enthält. Wenn die Variable einen Wert enthält, starten wir in der nächsten Zeile mit diesen Wert unserer Session.

Sollte kein Wert in $_GET['PHPSESSID'] enthalten sein, starten wir normal ohne Übergabe der Session ID, die Session. Im nächsten Abschnitt prüfen wir, ob die Variable: $_SESSION['username'] bereits einen Wert enthält, ansonsten machen mir diese Variable den PHP Script bekannt. Nun prüfen wir ob die Variable: $_SESSION['username'] einen Wert enthält und geben diesen Wert aus.

Hinweis: Man sollte bei diesem Beispiel eine IP Überprüfung einbauen, da ansonsten jeder auf die Session zugreifen kann. Empfehlenswert wäre die IP Adresse in der Session zu speichern und dann wieder zu prüfen, ob diese existiert.

Es wird hier erklärt, wie man in PHP eine IP Adresse ermittelt. Anschließend prüft man mit einer so genannten IF-Anweisung ob die IP Adresse in der Session enthalten ist. Zusätzlich kann man mit session_regenerate_id() auch ab und zu im Scriptlauf die Session ID mal ändern, dies erhöht die Sicherheit.

Wenn Sie die Session Variable wieder löschen möchten, können Sie hierzu unset() oder session_destroy() verwenden. Sie können das gesamte Transport Script hier herunterladen.

Soweit alles klar? Wenn ja, so können Sie hier das nächste Thema anfangen. Dabei geht es darum, einen lokalen Entwicklungsserver einrichten.