jhbCMS - tutorial.bekaan.org

» erste Schritte
» Vorbereitung
» PHP
   » echo
   » Variablen
   » include
   » Array
   » POST und GET
   » math. Operationen
   » if else elseif
   » Schleifen
   » Datei-Operationen
   » suchen
   » ersetzen
   » Datum
   » eMail
   » Session
   » Inkrement- und...
   » ternärer Oper...
   » eigene Funktio...
   » RegExp
» MySQL
» weitere Hilfe


» PDF-download

Session


Hier wird erklärt, wie das mit den sessions funktioniert.

zu Beginn einer jeden Seite müsst ihr
PHP-Code:
01
02
03
<?php
  session_start
();
?>

stehen haben, damit der PHP-Parser weiß, dass er eine session initialisieren soll.
WICHTIG: vorher darf keine Ausgabe an den Client gekommen sein, sonst gibt es einen Fehler!

nun kann ähnlich den POST- und GET-Variablen mit den SESSION-Variablen hantiert werden:
PHP-Code:
01
02
03
04
05
06
<?php
  session_start
();
  
$_SESSION['test'] = 'inhalt der Variable';

  echo 
$_SESSION['test'];
?>


Der enorme Vorteil von SESSION-Variablen gegenüber anderen Variablen in PHP ist, dass sie für eine gesamte Sitzung zur Verfügung stehen. Die Variablen werden auf dem Server gespeichert und stehen dort für eine voreingestellte Zeit zur Verfügung. Solange der Besucher identifiziert werden kann, stehen die abgespeicherten Inhalte zur Verfügung. Diese Speichermöglichkeit ist aber nicht von ewiger Dauer.

Das kann man nun nutzen, dass sich Besucher in einem Forum (als Beispiel) anmelden, damit sie einmal identifiziert sind. Die Daten werden in SESSION-Variablen gespeichert, die dem PHP-Skript nun überall auf dem Server zur Verfügung stehen. So weiß 'das Forum' auch noch nach einigen besuchten Seiten, wer sich eingeloggt hat.
In der Regel kann der Server einen Besucher nach schließen des Browsers (beim client) nicht mehr als solchen wiedererkennen. Die auf dem Server gespeicherten Daten sind nun nicht mehr eindeutig einem Besucher zuzuordnen. Daher ist der Server so eingestellt, dass veraltete Daten regelmäßig gelöscht werden.

Ein an dieser Stelle erwähnte Tutorial sei:
externer linkEin sessionbasiertes Loginsystem


Es gibt verschiedene Möglichkeiten sicherzustellen, dass der Client beim aufrufen der nächsten Seite als der berechtigte user identifiziert werden kann.
Eine Möglichkeit ist die generierte SessionID als GET-Parameter zu übergeben.
Dafür muss an jeden link folgendes angehängt werden:
* der Name der Variable
* der Wert der Session-Variable

PHP-Code:
01
02
03
<?php
  
echo '<a  href="http://www.domain.tld/index.php?'.session_name().'='.session_id().'">link</a>';
?>


Je nach Konfiguration des Servers kann es auch sein, dass versucht wird, dass die SessionID auch als Cookie gespeichert wird, oder gar automatisch an jeden link angehängt wird.

Um eine Session erfolgreich zu löschen, zum Beispiel bei einem logout kann man die Session elegant löschen.

Wie das geht hat externer linkBasti externer linkhier gezeigt:

PHP-Code:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

   <?php

// log out

// Session muss natürlich laufen
session_start();

// Session-Daten loeschen
$_SESSION array();


// wenn die Session wirklich beendet werden soll:

if (isset($_COOKIE[session_name()]))
    
setcookie(session_name(), ''time() - 42000'/');

session_destroy();
header('Location: ' $sAbsoluteUri);


// oder, wenn die Session weiter laufen soll und PHP >= 5.1:

session_regenerate_id(true);
session_write_close();

if (
SID !== '')
    
SID strpos($sAbsoluteUri'?') === false '?' SID '&' SID;

header('Location: ' $sAbsoluteUri SID); 
?>