An dieser Stelle wurde eine Session-Fallback-Klasse propagiert, die den damals kaputten (Sommer 2000) PHP-Fallback umging. Diese Klasse ist mittlerweile obsolet und wird nicht mehr weiter gepflegt und auch nicht mehr zum Download angeboten. Benutze zukünftig den php.ini Parameter session.use_trans_sid um einen Session-Id-Fallback zu realisieren.
Ein kleiner Auszug aus dem antiquierten Artikel:
Da Session-Ids üblicherweise in temporären Cookies gespeichtert werden, die beim Request/Response zwischen Server und Client ausgetauscht werden, entsteht beim Umgang mit Sessions ein technisches Problem, und zwar wenn der Client/Browser keine Cookie annehmen kann oder will. In diesem Fall muss die Session-Id auf einem anderem Weg übertragen werden, und zwar als ein Teil des URL (also der Adresse einer Website).
Das PHP-Script muss feststellen, ob der Client Cookies annimmt und ggf. darauf reagieren. Diesen Mechanismus nennt man Fallback. Also einen Rückfall oder Atavismus: zuerst wird versucht einen Cookie zu setzen, schlägt dies fehl wird auf eine alternative Verfahrensweise ausgewichen.
Ein großer Nachteil des Fallbacks im URL ist, dass bei einer aktiven Verlinkung der Referer (also die Adresse der Seite – woher man kam) von den meisten Browsern an die Ziel-Seite übergeben wird und somit die Session-Id Fremden mitgeteilt wird.
Da dies ein potentielles Sicherheitsrisiko darstellt, empfiehlt es sich bei Links auf fremde Seiten auf die Übergabe der Session-Id zu verzichten. Dies klingt einleuchtend, birgt aber Fallen, sofern man PHP mit der Option --enable-trans-sid kompiliert hat und den kaputt-automatischen Fallback von PHP 4 benutzt (Stand Sommer 2000).
Befindet man sich auf einer Seite, die Session-Fallback benutzt, und steuert man eine fremde Seite über die direkte Eingabe des URL in das Adressfeld des Browsers oder über ein Lesezeichen (Bookmark), so ist nicht zu befürchten, dass der Browser den Referer samt der Session-Id an die fremde Seite sendet.
--enable-trans-sid befähigt den PHP-Parser selbständig den Fallback auszuführen, sofern er zusätzlich in der php.ini aktiviert wird (session.use_trans_sid=1). Durch das automatische – bei jedem Request wiederkehrende – Umschreiben aller relevanten HTML-Tags (<a>, <form>, etc.) durch den Parser benötigt das Script mehr Zeit um abgearbeitet zu werden.
Abhängig von der PHP-Version funktioniert der in PHP implementierte Fallback u.U. nicht richtig, und liefert falschen Code. Vorallem eingebettete JavaScript-Funktionen können funktionellen Schaden erleiden, wenn sie Konstrukte wie z.B. location.href="index.php" nutzen. In diesem Fall gibt es für den Parser kaum eine Chance das als relevanten Code zu erkennen und ggf. die Session-Id als GET-Paramater an den diesen Redirect anzufügen. Die Session-Daten wären dann für das index.php-Script verloren, da ja keine mehr Zuordnung zu der Sessiondatei hergestellt werden kann