31.2 Arbeiten mit Sessions
Bei vielen dynamischen Websites müssen Daten über den gesamten Zeitraum eines Seitenzugriffs hinterlegt werden. Die wohl häufigste Anwendung ist dabei ein Warenkorb. Innerhalb eines Shopsystems können Sie an beliebiger Stelle innerhalb der Website Artikel in eine Art Container ablegen. Bei der endgültigen Bestellung stehen Ihnen alle vorher ausgewählten Artikel zur Verfügung.
Arbeitsweise von Sessions | Warenkörbe werden sehr häufig mit Sessions realisiert. Im Kapitel 21 zur Einführung in PHP haben wir Ihnen bereits grundlegende Eigenschaften und Befehle zum Arbeiten mit Sessions erklärt.
In Abbildung 31.18 wird die Arbeitsweise von Sessions grafisch dargestellt. Während des Site-Zugriffs wird eine Session gestartet, die Ihnen dann während der gesamten Zeit zur Verfügung steht. Jedes der einzelnen Dokumente kann auf die Inhalte der Session zugreifen und Variablen hinzufügen, abfragen oder manipulieren.
Abbildung 31.18 Schema der Arbeit mit Sessions
Um mit Sessions zu arbeiten, müssen die Inhalte der Sessions an alle Dokumente, die Sie anfordern, übermittelt werden. Dies kann durch Cookies oder durch die Übermittlung des Session-Arrays als URL-Parameter erfolgen. Die Möglichkeit, Sessions als File auf dem Server zu hinterlegen, wird von vielen Providern aus Sicherheitsgründen deaktiviert. Da Sie nicht wissen, ob ein User Cookies aktiviert hat, sollten Sie die Session in jedem Fall zusätzlich als URL-Parameter mit übergeben.
Listing 31.8 Übergabe der Session-ID
<a href="sessions_2.php?SID">Link</a>
Dazu hängen Sie, wie in Listing 31.8 dargestellt, die SID (Session-Variable) an den Hyperlink. Durch das Anhängen der Variablen SID wird die URL wie in Abbildung 31.19 aufgerufen. Um die Session-ID selbst müssen Sie sich nicht kümmern. SID ist ein Platzhalter, der von PHP erkannt wird.
Abbildung 31.19 Browseradresszeile mit Session-ID
Session starten | Damit ein PHP-Dokument mit Sessions arbeiten kann, muss der folgende Befehl am besten immer direkt am Anfang des Dokumentes stehen, damit eine Session gestartet wird oder auf eine bestehende Session zugegriffen wird.
Listing 31.9 Starten einer Session
session_start();
Variablen registrieren | Im folgenden Beispiel (Listing 31.10) haben wir fünf Variablen mit den verschiedensten Inhalten deklariert. Damit diese Variablen in der Session zur Verfügung stehen, müssen sie in der Session registriert werden.
Das geschieht mit dem Befehl session_register(). Beachten Sie, dass dabei die Variablen ohne Dollarzeichen in runden Klammern geschrieben werden.
Listing 31.10 Registrieren von Session-Variablen
<? session_start(); $var_1 = 200; $var_2 = 400; $var_3 = "Auch ganze Zeilen sind erlaubt"; $var_4 = "Wie Sie sehen,"; $var_5 = "sehr komfortabel"; session_register('var_1'); session_register('var_2'); session_register('var_3'); session_register('var_4'); session_register('var_5'); ?>
In jedem der folgenden Dokumente stehen Ihnen, bei gestarteter Session, die Variablen wie in folgendem Listing wieder zur Verfügung.
Listing 31.11 Anzeige der Session-Variablen
<p><?php echo $_SESSION['var_1']; ?> </p> <p><?php echo $_SESSION['var_2']; ?></p> <p><?php echo $_SESSION['var_3']; ?></p> <p><?php echo $_SESSION['var_4']; ?> <?php echo $_SESSION['var_5']; ?></p>
Die Arbeit mit Sessions können Sie sich in Dreamweaver 8 erleichtern, indem Sie im Bedienfeld Bindungen Sitzungsvariablen anlegen. Das Registrieren der Variablen müssen Sie im Quelltext vornehmen. Die Anzeige der Session-Inhalte können Sie jedoch wie gewohnt im Layoutmodus erledigen.
In Abbildung 31.21 sehen Sie das Bedienfeld Bindungen mit Sitzungsvariablen. Um die Variablen in einem Dokument auszugeben, ziehen Sie diese wie gewohnt in Ihr Dokument.
Zum Abschluss noch eins: Sessions werden nicht nur von PHP unterstützt, auch andere Programmiersprachen für Websites verfügen über ähnliche Technologien zur Datenspeicherung.
Abbildung 31.20 Anlegen einer Sitzungsvariablen
Abbildung 31.21 Sitzungsvariablen in Dreamweaver 8