Mailinglisten-Archive |
Hi Tim, Tim Hildebrandt schrieb: >> 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. > > Jein. Wir brauchen die Sitzungsdaten grundsätzlich sofort. ok. > Das ist aber > auch nicht das eigentliche Problem. Wir haben genug Kapazität, um jeden > Zugriff zu protokollieren. Darum ging es mir auch nicht. Ich meinte nur, dass ein Verzicht auf die Session, wo sie nicht wirklich erforderlich ist, Dein Problem ein Stueck weit minimieren wuerde. Koennte eine Suchmaschine Eure Website denn auch ohne Session sinnvoll indizieren? Wenn ja, dann waere doch die Alternativloesung, die ich skizziert hatte, die Umgebungsvariable HTTP_USER_AGENT abfragen und bei Suchmaschinenbesuchen keine Session zu starten, eine Moeglichkeit, Dein Problem einigermassen in den Griff zu kriegen. > Wichtig ist, dass die Funktion > "setcookie" in PHP nur dann "false" zurück gibt, wenn der Browser den > Cookie > technisch nicht akzeptiert. Sprich wenn der Benutzer die Cookie-Verwaltung > explizit ausgeschaltet hat. Für diesen Fall ist meine Systemreaktion so > vorgesehen, dass die Sitzungsinformation in der URL platziert wird. > > Problematisch ist ein Sonderfall: Die Funktion "setcookie" gibt "true" > zurück (sprich: Der Browser kann Cookies technisch entgegen nehmen) aber > der > Benutzer hat die Cookie-Verwaltung auf "Eingabeaufforderung" gestellt und > wird gefragt, ob der korrekt entgegengenommene Cookie (!) repräsentiert > werden soll oder nicht. Dann und nur dann, wenn der Benutzer *nein* > antwortet, geht mir die Sitzung flöten. Und genau dann habe ich das > Problem, > die zuvor ja bereits geöffnete Sitzung im System irgendwie aufgrund > anderer > Merkmale wieder zu finden... Ich habe die Funktion setcookie() anders verstanden. Sie liefert immer dann TRUE zurueck, wenn die Funktion fehlerfrei ausgefuehrt werden konnte. Sie liefert FALSE zurueck, wenn dies nicht der Fall ist, z.B. weil zuvor in der Datei schon Ausgaben erfolgt sind. Woher soll die Funktion auf dem Server auch wissen, ob der Browser auf dem Client den Cookie akzeptieren wird? Du kannst auch nie in der Seite, die einen neuen Cookie setzt oder einen bereits existierenden modifiziert, den neu gesetzten Cookie bzw. den neuen Wert des bereits existierenden Cookies auslesen. Das geht erst auf der Folgeseite. Du musst also vermutlich Deine Pruefung, ob der Cookie existiert, modifizieren. > Und hier setzt meine Frage an, ob jemand hier in der Liste darüber schon > mal > nachgedacht hat und vielleicht eine Lösung hat... Ob die Session verloren geht bzw. nicht dauerhaft zustande kommt, wenn der Client den Cookie nicht akzeptiert, haengt von Deiner PHP-Konfiguration ab. Wenn PHP die Session-ID alternativ auch an die URL anhaengen darf, geht sie nicht verloren, wenn der Cookie nicht gesetzt werden kann. In diesem Fall musst Du nur an bestimmten Stellen dafuer sorgen, dass die Session-ID in den Seiten sauber in den URLs mittransportiert wird, z.B. klassischerweise wenn Du ein header('Location: ...'); einbaust. Dein Kernproblem ist aber, dass die Suchmaschinen bei URLs, die Session-IDs enthalten, Schwierigkeiten machen. Also komme ich damit wieder zu meinen beiden Vorschlagen, die ich in meiner ersten Mail zu diesem Thema gemacht habe. Wenn Du von diesen beiden Vorschlaegen den ersten, die Session erst zu starten, wenn es wirklich sein muss, ausschliesst, was haeltst Du denn von dem zweiten, den HTTP_USER_AGENT abzufragen und wenn sie darin eine Suchmaschine zu erkennen gibt, die Session nicht zu starten? Viele Gruesse Lutz
php::bar PHP Wiki - Listenarchive