Mailinglisten-Archive |
> Welche Möglichkeiten hat man noch wenn man keine Cookies verwenden kann > und die Anfrage auch nicht ans URL anghängen kann da es zulang wird ?! Du hast mindestens vier Möglichkeiten, eine Session-ID auf dem Client zu speichern, d.h. benutzerpersistent zu machen. - Cookies - GET/POST - Path - DNS Tricks Cookies sind für solche Vorhaben erfunden worden und sollten verwendet werden. Sie haben den Vorteil, daß man im Gegensatz zu allen anderen Methoden, die Speicherdauer der Session exakt kontrollieren kann; evt. kann man eine Session über mehrere Besuche hinweg retten. Der Nachteil ist bekannt: Nicht jeder Client unterstützt Cookies. GET/POST ist als Alternative zu Cookies beliebt. Die Session-ID wird dabei als normale PHP-Variable übergeben, z.B. mit script.php3?session_id=<id> oder durch versteckte Formularfelder. Diese Möglichkeit hat den Vorteil, daß sie garantiert mit allen Browsern oder Web-Servern funktioniert. Nachteile: - Du musst alle Links Deiner Anwendung umschreiben und manuell mit der Session-ID versehen. Vergisst Du einen Link, geht die Session flöten. - Die Session-ID ist Teil der URL und scheint im HTTP_REFERER bei fremden Sites auf, ebenso in Deinen Log-Dateien und in Proxy-Logs. - Die Session-ID wird mit gebookmarkt, oder als Teil der Adresse weitergegeben. - Man merkt sofort, daß Deine Seite dynamisch generiert ist; Suchmaschinen werden sich eventuell weigern, die Seite zu indizieren. Path: Wir in einem Artikel von mir auf http://www.php-center.de dargestellt, kann man Variablen auch in den Pfad der URL einarbeiten. Damit schaut die Seite wie eine statische Seite aus und wird entsprechend von Suchmaschinen behandelt. Deine URL könnte dann so aussehen: http://www.server.com/script.php3/<sessionid>. Diese Methode erfordert Handarbeit [1] sowohl beim Extrahieren der Session-ID aus dem Pfad, als auch beim Umschreiben aller Links Deiner Anwendung. Außerdem gelten diesselben Nachteile (außer dem letzten) wie bei GET/POST. Mit DNS-Tricks kann man die Session-ID direkt im Hostnamen verstecken. Deine URL sieht dann beispielsweise so aus: http://01727303a49ef3f34dd7c4a07acd2c1a.phpwebdev.com:1084/sessions/basic.ph p3 Es gelten dieselben Nachteile wie bei Path, bloß musst Du auf diese Weise keine Links in Deiner Anwendung anpassen. Wie das technisch genau geht, kann man kurz in einem Artikel von Kris Köhntopp auf PHP-Dev (Suche nach "fahrschulportal") nachlesen; detailliert erkläre ich es später mal [2]. Im allgemeinen solltest Du eine Mischung aus Cookies und entweder GET/POST bzw Path benutzen. Teste, ob Dein Besucher Cookies unterstützt, und benutze sie, falls vorhanden. Falls nicht, benutze GET/POST bzw. Path. Es gibt noch einige andere Tricks, zum Beispiel, alle Seiten in ein Frame zu setzen und darin die Session-ID zu speichern, und per JavaScript in den anderen Seiten auslesen. Für professionellen Einsatz eignen sich diese nicht. Mit freundlichen Grüßen, Tobias Ratschiller [1] PHP 4.0 unterstützt automatisches Umschreiben aller Links, um die Session-ID einzbauen. Das hat einen Performance-Nachteil. [2] Web Application Development With PHP; Tobias Ratschiller, Till Gerken; New Riders, irgendwann um den Mai/Juni 2000 -- <?$I=1.125;while($I>=-1.225){for($l= /* Tobias Ratschiller */ -2;$l<=1;$l+=3/79){$Q=$u=0;for($E=127; /* New Media Consultant */ $Q*$Q+$u*$u<4&&--$E>32;){$o=$Q;$Q=$Q* /* http://phpWizard.net */ $Q-$u*$u+$l;$u=2*$o*$u+$I;}printf("%c",$E);}print("\n");$I-=9/88;} ?>
php::bar PHP Wiki - Listenarchive