<?php

# Die Session muss immer zuerst gestartet werden, bevor
# eine Ausgabe an den Browser erfolgt !!!
SESSION_START();

$_SESSION["username"] = "Heinz";
$_SESSION["uhrzeit"] = time();

?>

<a href="profil.php">Hier geht´s zur profil.php !</a>

Datei: profil.php:

<?php
# Session starten nicht vergessen !!! Sonst gibts keine Daten !
SESSION_START();

echo "In der letzten Datei wurde der Benutzer " . $_SESSION["username"] . " gespeichert - am " . date("d.m.Y H:i:s", $_SESSION["uhrzeit"]) . " Uhr";

?>

Hier wird erst die login.php gestartet - diese startet die Session und speichert in dieser den Benutzernamen und das aktuelle Datum mit der Uhrzeit (Unix Timestamp).

Wenn der Surfer dann auf den Link klickt, kommt er zu der profil.php und dort wird wieder die Session aufgegriffen und die Daten werden ausgegeben.

Vorteil dieser Methode: Daten die man einmal in einer Session speichert bleiben solange erhalten bis man diese zerstört oder der Surfer den Browser schliesst und eine gewisse Zeit vergeht.

Man muss also nicht von Datei zu Datei immer wieder diese Daten übergeben wie bei GET damit diese nicht verloren gehen. Diese Daten sind dann aber auch nur für die Domain gültig, auf der sich der Surfer gerade befindet - wechselt man die Domain, dann wäre dies eine neue Session.

Es gibt Webserver, da wird die Session in der Adresszeile mit angezeigt - z.B. index.php?PHPSESSID=394829348928349283942934 - deshalb sollte man so eine Adresse nie mit der Sessionnummer weitergeben, weil der nächste der auf diesen Link klickt surft mit euren Daten weiter. Die Daten werden nämlich auf dem Server gespeichert und nicht beim Surfer (was zum Beispiel bei Cookies der Fall ist).

Um ein Skript abzusichern könnte man z.B. die IP Adresse des Surfers noch mit in der Session speichern. Wenn diese IP Adresse aus der Session nicht gleich der IP Adresse des Surfers ist, könnte man die Session zerstören ( SESSION_DESTROY(); nur so als Anregungsbeispiel).