phpbar.de logo

Mailinglisten-Archive

[php] Umbau: Session-ID aus URL in Cookie stecken - Fragen zum ersten Folgeaufruf der Seite

[php] Umbau: Session-ID aus URL in Cookie stecken - Fragen zum ersten Folgeaufruf der Seite

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Mit Sep 22 11:09:46 CEST 2004


Hi Tim,

Tim Hildebrandt schrieb:
> ach ja, jetzt dachte ich, dass ich meine Seite wesentlich besser von
> Suchmaschinen indizieren lassen kann, wenn ich die verräterische Syntax
> (...php?a=b&c=d etc.) mittels mor_rewrite in eine echte HTML-Syntax
> bringe,
> doch leider war ich bis jetzt gezwungen, die Session-ID ebenfalls in die
> URL
> mit einzubinden. Das hat dann offensichtlich dazu geführt, dass sich
> einige
> Suchmaschinen auf meiner Seite struppig scannen, da ja ständig eine andere
> Datei in der URL zu finden ist (logisch, die SID wird ja bei jedem Besuch
> geändert).
>
> Ich habe darüber nachgedacht, die SID in einen Cookie zu schreiben und an
> die ursprüngliche Position der SID innerhalb der URL einfach nur das Wort
> "page" zu schreiben. Und hier kommt mein Problem: Ich habe in der
> Dokumentation zum Befehl "setcookie" gelesen, dass die Funktion true
> zurückliefert, wenn der Browser den Cokie angenommen hat - unabhängig, ob
> der vor diesem Browser sitzende Mensch dieses Cockie tatsächlich
> akzeptiert
> oder nicht. Das bedeutet wohl, dass man in letzter Konsequenz nicht weiß,
> ob
> das Cookie trotz technisch positiver Möglichkeit akzeptiert wurde oder
> nicht.
>
> Angenommen, ich gebe beim ersten Seitenaufruf ein Cookie erfolgreich aus
> und
> tausche die generierte SID gegen einen klar definierten Begriff wie
> "page".
> Dann sind alle Links auf meiner Seite _nominell_ ohne SID. Was aber, wenn
> das Cookie nicht angenommen wurde? Dann hätte ich beim ersten Folgeaufruf
> das Problem, ohne SID da zu stehen und müßte diese irgendwie anders
> "wiederfinden"...
>
> Hat jemand zu diesem Thema eine Idee oder kann mir verraten, wie er dieses
> Problem gelöst hat?

ich kenne Deine Website jetzt nicht und weiss nicht, ob sie ohne Session
nicht mehr fehlerfrei arbeiten kann.

Grundsaetzlich sehe ich es aber so, dass eine Session nur gestartet werden
sollte, wenn es wirklich noetig ist, vor allem in oeffentlich
zugaenglichen Bereichen, wo auch keine individualisierten bzw.
personalisierten Inhalte (Bsp. Warenkorb) angezeigt werden. Wenn Du das so
handhaben wuerdest, dann wuerde der Besuch einer Suchmaschine auch solange
keine Session starten, wie die Suchmaschine nicht eine Seite betritt, die
die Session startet. Dein Problem waere schon einmal ein gutes Stueck weit
geloest.
Du muesstest dann nur noch verhindern, dass eine Suchmaschine, wenn sie
eine Seite betritt, die eine Session startet, dort Links mit angehaengter
Session-ID vorgesetzt bekommt. Oder Du verhinderst, eine Suchmaschine
ueberhaupt eine solche Seite betreten kann.

Alternativ koenntest Du versuchen, anhand der Umgebungsvariable
HTTP_USER_AGENT zu ermitteln, ob gerade eine Suchmaschine auf Deine
Website zugreift und in diesem Fall die Session nicht starten. Dies ist
allerdings recht schwierig, weil Du alle moeglichen, relevanten Inhalte
der Variable schon vorher und stets aktuell kennen musst, um sie abfragen
zu koennen. Ausserdem geben sich Suchmaschinen nicht immer so zu erkennen.

Meine Empfehlung also: Session nur da, wo sie noetig ist und so, dass eine
Suchmaschine sie nicht startet.

Ich habe das z.B. bei der Suche fuer meine Website so geloest, dass die
Session nur dann gestartet wird, wenn eine der dazugehoerigen Seiten
("Erweiterte Suche", "Index-Suche", "Suchergebnis") betreten wird. Die
Session dient hier dazu, sich die letzten Einstellungen in der zuletzt
aufgerufenen Suchmaske fuer meogliche, spaetere Verfeinerungen der Suche
zu merken sowie das letzte Suchergebnis und die zuletzt aufgerufene Seite
im Ergebnis, so dass man spaeter noch einmal an genau diese Stelle im
Ergebnis  springen und von dort auch wieder durch das Ergebnis navigieren
kann.

Ich versuche, einen Session-Cookie zu verwenden. Wenn der Browser das
ablehnt, wird die Session innerhalb der Suche-Seiten ueber die URL
weitergegeben, aber nur dort. Nur wer Cookies zulaesst, kann sich seine
Session auch merken, wenn er zwischenzeitlich ausserhalb der Suche-Seiten
auf meiner Website unterwegs ist. D.h. also: Session-ID in Cookie = volle
Funktionalitaet, Session-ID in URL = grundlegende Funktionalitaet.

So habe ich fuer mich sichergestellt, dass weder Suchmaschinen noch
Besucher ausserhalb der Suche Seiten mit Session-ID in der URL vorgesetzt
bekommen, denn ich will weder Suchmaschinen verwirren, noch Verlinkungen
von anderen Websites mit Session-ID oder Lesezeichen im Browser mit
Session-ID. ;-) Das wuerde alles nur Aerger machen, und das noch bei
Seiten, die gar keine Individualisierung (Personalisierung) der Inhalte
erfordern. :-)


Viele Gruesse

Lutz


php::bar PHP Wiki   -   Listenarchive