PHP – Cookies und Sessions

Cookies und Sessions sind aus der PHP Programmierung nicht wegzudenken. Aus diesem Grund werden hier auf die wesentlichen Merkmal anhand einiger kleiner Beispiele dargestellt.

Cookies in PHP

Habt ihr euch auch schon einmal gefragt warum ihr einen bestimmten Artikel auf Amazon anschaut und beim nächsten Besuch genau dieser auf der Startseite für dich angezeigt wird? Oder besser: Genau dieser Artikel wird auf Seiten von Dritten angezeigt.
Beim besuchen einer Website hinterlässt jeder Internetnutzer einige seiner Fingerabdrücke. Einige Spuren werden in Cookies gespeichert. Cookies sind Dateien die auf dem Client gespeichert, beschrieben sowie ausgelesen werden können. Sie helfen dem Server den Client zu identifizieren und ggf. Voreinstellungen zu treffen.

Unter PHP lassen sich Cookies mit Hilfe von setcookie() wie folgt setzen:

<?php
     setcookie($name, $wert, $verfallsdatum, $pfad, $domain, $secure, $httponly);
?>

Nicht alle Parameter sind Pflichtparameter. Genau genommen muss nur der Name gesetzt werden. Die aktuelle Zeit wird beim setzen als Zeitstempel genutzt. Ein Verfallsdatum gibt den Zeitpunkt der Gültigkeit an. Der Pfad bestimmt, zu welchem Pfad der Cookie verfügbar sein wird.

[ad#co-3]

Beispiel für ein PHP Cookie

<?php
     setcookie("MeinErstesCookie", "Willkommen auf itblogging.de", time() + 60);
?>

Das Cookie hat den Namen MeinErstesCookie und hat den Wer Das ist ein Test. Es hat einen Gültigkeitszeitraum von 60 Sekunden.
Über die globale Variable $_COOKIE bzw. $HTTP_COOKIE_VARS wird auf Cookies zugegriffen.

<?php
     echo $_COOKIE["MeinErstesCookie"];
     echo $HTTP_COOKIE_VARS["MeinErstesCookie"];
     print_r($_COOKIE);
?>

Sessions in PHP

Nicht selten ist es notwendig, einen Benutzer eindeutig zu identifizieren. Stellt euch vor, ihr shopt in eurem Lieblingsonlinestore. Beim Aufruf des Warenkorbs sind aber nicht die Artikel aufgelistet die zuvor ausgesucht wurden, sondern völlig andere. Sessions helfen dem Server die Benutzer zu unterscheiden. Sie begleiten den Webuser während seines ganzen Aufenthaltes um das oben angesprochene Szenario zu vermeiden. Damit die Session erhalten bleibt, wird sie beispielsweise in einem Cookie gespeichert. Alternativ könnte man sie auch in der URL oder in einem Hidden-Field speichern, da Cookies unter Umständen nicht immer erreichbar sind.

Ein Tutorial wäre ist kein richtiges Tutorial wenn es nichts praktisches umzusetzen gibt. Wir erstellen eine Session und speichern diese in einer Variable. Anschließend geben wir den Session-Namen und die Session-Id wieder aus.

<?php
     $name = "meineErsteSession";
     session_register("name");
     echo(session_name() . " – " . session_id());
?>

Grundsätzlich ist es allerdings zu empfehlen, die Variablen direkt in das Session-Objekt zu schreiben.
$_SESSION["name"] = meineErsteSession

Werden Cookies nicht akzeptiert, kann die Session-ID wie bereits erwähnt auch direkt in der URL verwendet werden.

echo '<br><a href="itblogging.php?' . SID . '">IT Blog</a>';
echo '<br><a href="itblogging.php?name=' . session_id() . '">IT Blog</a>';

Wenn Werte beispielsweise über Seiten hinweg gespeichert werden sollen (z.B. die Sprachauswahl), können diese direkt in die Session geschrieben werden.

<?php
     session_start();
     $autos = array("Golf", "540i", "GT2", "Z06");
     $_SESSION["autos"] = $autos;
     // oder session_register("autos");
?>

Um den Inhalt der Variable wieder auszulesen erfolgt dies über die Variable oder über das Session-Objekt.

<?php
     session_start();
     echo implode(",", $autos)."<br>";
     echo $_SESSION["autos"];
?>