PHP 5 - Kompendium
39,95€
(Preis inkl. Mwst. )
| Autor(en): | Christian Wenz, Tobias Hauser |
| Verlag: | Markt+Technik |
| Reihe: | Kompendium / Handbuch |
| Version: | 1. Auflage, 2004 |
| Umfang: | 1040 Seiten |
| Format: | PDF: 20,2MB |
| EAN: | 9783827262929 |
| Bestell-Nr.: | 82726292P |
| Artikeltyp: | E-Book |
Inhaltsverzeichnis (PDF, 575 Kb) Leseprobe (PDF, 1120 Kb)
(aus dem Kapitel zu Sessions)
http://server/skript.php?PHPSESSID=d5dbc3af2d4bbcc445990165c5758005
Wenn Sie nun jeden einzelnen Link auf jeder Seite per PHP so anpassen, dass automatisch die Session-ID angehängt wird, haben Sie Ihr Ziel erreicht: Die Session-ID geht nie verloren, Sie behalten also die zugehörigen Session-Daten. Die Session-ID selbst steht als GET-Parameter zur Verfügung, sollte also auch nicht die Ausgabe des Skripts beeinflussen.
Klingt aufwändig? Ist es auch. PHP wäre aber nicht PHP, wenn es nicht einen praktischen Ausweg geben würde. Es ist möglich, dass automatisch alle Links angepasst werden würden. Dazu bedarf es zweierlei Schritte:
Wenn Sie beide Schritte durchgeführt haben, kann an alle Links automatisch die Session-ID angehängt werden. Die Betonung liegt hier auf kann: Die Entscheidung wird in Abhängigkeit der php.ini-Konfigurationseinstellungen session.use_cookies und session.use_only_cookies gefällt. Wenn session.use_only_cookies aktiviert, also auf 1 gesetzt ist, arbeitet das Session-Management von PHP nur mit Cookies. Der Client muss also Cookies unterstützen. Anders sieht es bei session.use_cookies aus. Ist dies auf 0 gesetzt, also ausgeschaltet, werden gar keine Cookies verwendet, die URLs also automatisch um die Session-ID ergänzt. Empfehlenswert ist aber die Aktivierung dieser Option: Dann nämlich versucht PHP, ein Cookie mit der Session-ID zu setzen. Wenn der Client dieses Cookie akzeptiert, wird mit Cookies gearbeitet. Lehnt der Client das Cookie aber ab, schaltet PHP automatisch in den "Session-ID-via-URL"-Modus um.
Fakten, Hintergründe und Konfiguration
Zunächst einige Worte über den aktuellen Ablauf. Bei Verwendung des Session-Managements von PHP ist es wie eingangs erläutert möglich, in einer Sitzung Daten abzuspeichern. Diese werden serialisiert und in einem Datenspeicher abgelegt, meist aus Gründen der Einfachheit im Dateisystem des Webservers. Jede der Sessions hat eine Nummer, einen 32stelligen Hexadezimalwert. Diese Nummer, die so genannte Session-ID, dient als eindeutiger Bezeichner für die Daten der aktuellen Sitzung. Das Problem, Daten zwischen einzelnen Sitzungen zwischenzuspeichern, beschränkt sich also im Client-Server-Modell auf die Übermittlung der Session-ID. Die restliche Datenhaltung findet komplett auf dem Webserver statt und wird von PHP erledigt.Daten behalten
Für den Entwickler beschränkt sich der Aufwand darauf, PHP und den Webserver korrekt zu konfigurieren und dafür zu sorgen, dass die Session-ID stets zwischen Client und Server hin und her geschickt wird. Dafür gibt es zwei Ansätze:- Die Session-ID wird in einem Cookie gespeichert.
- Die Session-ID wird an alle URLs angehängt.
http://server/skript.php?PHPSESSID=d5dbc3af2d4bbcc445990165c5758005
Wenn Sie nun jeden einzelnen Link auf jeder Seite per PHP so anpassen, dass automatisch die Session-ID angehängt wird, haben Sie Ihr Ziel erreicht: Die Session-ID geht nie verloren, Sie behalten also die zugehörigen Session-Daten. Die Session-ID selbst steht als GET-Parameter zur Verfügung, sollte also auch nicht die Ausgabe des Skripts beeinflussen.
Klingt aufwändig? Ist es auch. PHP wäre aber nicht PHP, wenn es nicht einen praktischen Ausweg geben würde. Es ist möglich, dass automatisch alle Links angepasst werden würden. Dazu bedarf es zweierlei Schritte:
- Setzen Sie die Option session.use_trans_sid in der php.ini auf den Wert 1.
- Wenn Sie Unix/Linux einsetzen, konfigurieren Sie PHP mit dem Schalter --enable-trans-sid: ./configure --enable-trans-sid
Wenn Sie beide Schritte durchgeführt haben, kann an alle Links automatisch die Session-ID angehängt werden. Die Betonung liegt hier auf kann: Die Entscheidung wird in Abhängigkeit der php.ini-Konfigurationseinstellungen session.use_cookies und session.use_only_cookies gefällt. Wenn session.use_only_cookies aktiviert, also auf 1 gesetzt ist, arbeitet das Session-Management von PHP nur mit Cookies. Der Client muss also Cookies unterstützen. Anders sieht es bei session.use_cookies aus. Ist dies auf 0 gesetzt, also ausgeschaltet, werden gar keine Cookies verwendet, die URLs also automatisch um die Session-ID ergänzt. Empfehlenswert ist aber die Aktivierung dieser Option: Dann nämlich versucht PHP, ein Cookie mit der Session-ID zu setzen. Wenn der Client dieses Cookie akzeptiert, wird mit Cookies gearbeitet. Lehnt der Client das Cookie aber ab, schaltet PHP automatisch in den "Session-ID-via-URL"-Modus um.

