Homepage-Webhilfe Event-Banner

Sessions und Cookies

Sessions und Cookies erlauben es, Variablen anfrageübergreifend zu speichern.


Sessions erlauben es, Variablen innerhalb einer Sitzung zu speichern. Die Sitzung erstreckt sich vom expliziten Start der Session bis zur expliziten Zerstörung der Session oder dem Schließen des Browsers. Um eine Session zu starten, muss die Funktion session_start() aufgerufen werden. In jeder Datei, in welcher auf die Session-Variablen lesend oder schreibend zugegriffen werden muss, muss die Funktion session_start() aufgerufen werden. Einzelne Session-Variablen existieren natürlich erst ab dem Zeitpunkt, ab dem diese das erste Mal zugewiesen (initialisiert) wurden. Wenn Sie prüfen möchten, ob eine Session-Variable existiert, können Sie die Funktion isset() verwenden. Möchten Sie einzelne Session-Variablen wieder löschen, so können Sie die Funktion unset() nutzen, welcher Sie die zu löschende Variable übergeben müssen. Sollen alle Session-Variablen und somit die komplette Session gelöscht werden, so können Sie die Funktion session_destroy() aufrufen.

Beim ersten Aufruf der Funktion session_start() wird vom PHP-Interpreter eine sogenannte Session-ID erzeugt. Diese wird dann verwendet, um den Besucher zu identifizieren. Die ID kann entweder in der URL mitgegeben werden oder beim Besucher mittels eines Cookies gespeichert werden. In den meisten Fällen wird die Cookie-Variante verwendet, weil die andere einige Probleme mit sich bringt, weshalb wir auf diese auch nicht näher eingehen. Bei der Cookie-Variante wird beim Setzen des Cookies dem Browser mitgeteilt, dass das Cookie nur während dieser Browsersitzung gültig ist, weshalb der Browser das Cookie nicht zwingend als Datei abspeichern muss. Das Cookie für die Session-ID trägt standardmäßig den Namen PHPSESSID. Die Werte der Session-Variablen können vom Benutzer nicht betrachtet und nicht manipuliert werden, da diese auf dem Server gespeichert sind. Der Zugriff auf die Session-Variablen erfolgt mittels des superglobalen assoziativen Arrays $_SESSION. Im folgenden Beispiel werden die Formulareingaben (Vorname und Nachname) in einer Session gespeichert. Rufen Sie die Seite auf, füllen Sie das Formular aus, schließen Sie die Seite, rufen Sie diese erneut auf und Sie werden feststellen, dass Ihre Formulareingaben immer noch da sind. Wenn Sie den Browser schließen und die Seite erneut aufrufen, so werden Sie feststellen, dass die Formularfelder wieder leer sind.

<?php
session_start();

if (isset($_POST['vorname']) && isset($_POST['nachname']))
{
    $_SESSION['vorname'] = $_POST['vorname'];
    $_SESSION['nachname'] = $_POST['nachname'];
}
?>
<form action="session.php" method="post">
	<table>
		<tr>
			<td style="width: 100px;">Vorname:</td>
			<td><input type="text" name="vorname" value="<?php echo (isset($_SESSION['vorname']) ? $_SESSION['vorname'] : ''); ?>" /></td>
		</tr>
		<tr>
			<td style="width: 100px;">Nachname:</td>
			<td><input type="text" name="nachname" value="<?php echo (isset($_SESSION['nachname']) ? $_SESSION['nachname'] : ''); ?>" /></td>
		</tr>
		<tr>
			<td></td>
			<td><input type="submit" value="Session schreiben" /></td>
		</tr>
	</table>
</form>
Vorschau

Cookies-Icon Bei einem Cookie (zu Deutsch Keks) handelt es sich vereinfacht dargestellt um eine Textdatei, welche auf dem Computer des Besuchers gespeichert wird. Ein Cookie ist so lange gültig wie angegeben, dies kann nur die aktuelle Browsersitzung sein (wie z. B. bei dem Session-ID-Cookie) oder bis zu einem bestimmten angegebenen Zeitpunkt. Cookies werden vom Webserver gesetzt und können in PHP mittels der Funktion setcookie() gesetzt werden. Der Funktion wird der Cookie-Name, der Cookie-Wert, die Gültigkeit, der Pfad, die Domain, ein Wert zur Angabe, ob das Cookie nur bei HTTPS gesendet werden soll, und ein Wert zur Angabe, ob das Cookie nur per HTTP erreichbar ist, übergeben. Alle Parameter, abgesehen vom ersten Parameter für den Cookie-Namen, sind optional. Für gewöhnlich werden jedoch auch noch die Parameter für den Cookie-Wert und die Gültigkeit mit übergeben. Die anderen Parameter werden seltener benötigt. Dem Gültigkeits-Parameter wird ein UNIX-Zeitstempel übergeben, um somit die Ablaufzeit des Cookies festzulegen. Wird hier 0 übergeben, so gilt das Cookie nur bis zum Ende der Browsersitzung. Um ein Cookie zu löschen, übergeben Sie als Ablaufzeitpunkt einen abgelaufenen Zeitstempel (z. B. time() - 3600). Mit dem Pfad- und Domain-Parameter ist es möglich, den Gültigkeitsort des Cookies zu verändern. Standardmäßig gilt ein Cookie nur für das aktuelle Verzeichnis und deren Unterverzeichnisse. Der Aufruf der Funktion setcookie() muss, wie der Aufruf der Funktion header(), erfolgen, bevor irgendeine Art von Ausgabe gesendet wird. Nachdem ein Cookie gesetzt wurde, wird dessen Wert bei einer Anfrage vom Browser an den Server geschickt. In PHP kann auf den Cookie-Wert mittels des superglobalen assoziativen Arrays $_COOKIE zugegriffen werden. Das folgende Beispiel ist mit dem obigen Beispiel für Sessions vergleichbar. Zur Speicherung der Formulardaten werden jedoch die Cookies vorname und nachname verwendet, welche für 1 Stunde gültig sind.

<?php
if (isset($_POST['vorname']) && isset($_POST['nachname']))
{
    // Aktuelle Werte lokal merken
    $vorname = $_POST['vorname'];
    $nachname = $_POST['nachname'];
    
    // Cookies schreiben
    setcookie('vorname', $vorname, time() + 3600);
    setcookie('nachname', $nachname, time() + 3600);
}
else
{
    // Aktuelle Werte wenn verfügbar aus Cookie laden
    $vorname = isset($_COOKIE['vorname']) ? $_COOKIE['vorname'] : '';
    $nachname = isset($_COOKIE['nachname']) ? $_COOKIE['nachname'] : '';
}
?>
<form action="cookie.php" method="post">
	<table>
		<tr>
			<td style="width: 100px;">Vorname:</td>
			<td><input type="text" name="vorname" value="<?php echo $vorname; ?>" /></td>
		</tr>
		<tr>
			<td style="width: 100px;">Nachname:</td>
			<td><input type="text" name="nachname" value="<?php echo $nachname; ?>" /></td>
		</tr>
		<tr>
			<td></td>
			<td><input type="submit" value="Cookie schreiben" /></td>
		</tr>
	</table>
</form>
Vorschau
Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen OK