Session geht verloren.
Eliane82
- php
Hallo zusammen
Gibt es eine Möglichkeit beim zurück-blättern via Browser-Menue, die Session zu behalten, wenn man ohne Cookies auskommen will?
Nach 2 Stunden erfolglosem googlen, gehe ich mal davon aus, dass dies nicht möglich ist...
Besten Dank für Eure Hilfe.
Gruss Eli
So weit ich weis nicht.
Warum nutzt du keine Cookies oder DB?
Mfg Licht
(Hallo|Hi(ho)|Tag|Nabend) Eliane82,
Gibt es eine Möglichkeit beim zurück-blättern via Browser-Menue, die Session zu behalten, wenn man ohne Cookies auskommen will?
Wenn die Session-ID immer die gleiche ist und in der URL mitgeschickt wurde -- klar. Probleme kann es geben, wenn die Session-ID per POST (über ein HTML-Formular) mitgeschickt wurde, oder wenn die Session-ID bei jedem Zugriff geändert wird -- obwohl mir letzteres ohne Verwendung von Cookies eher sinnfrei erscheint.
Nach 2 Stunden erfolglosem googlen, gehe ich mal davon aus, dass dies nicht möglich ist...
Wonach hast du gegoogelt? ;-)
... und zu welchem Zweck benötigst du dieses "Feature"?
MffG
EisFuX
Danke für Eure schnellen Antworten!
Wenn die Session-ID immer die gleiche ist und in der URL mitgeschickt wurde -- klar. Probleme kann es geben, wenn die Session-ID per POST (über ein HTML-Formular) mitgeschickt wurde, oder wenn die Session-ID bei jedem Zugriff geändert wird -- obwohl mir letzteres ohne Verwendung von Cookies eher sinnfrei erscheint.
Die Sessions-ID bleibt immer gleich. Das Formular dazwischen arbeitet mit der GET-Methode. Doch welche Möglichkeit gibt es, um die benutzte Sessions-ID auf der Start- bzw. Eintrittseite ausfindig zu machen. Eine Möglichkeit wäre vielleicht eine Änderung der Sessionskonfigurationsdatei auf dem Server, doch für diese habe ich keinen Zugriff. Des Weiteren sah ich in einem Forum, dass diese Konfigurationsparameter auch manuell auf jeder Seite im Headerbereich geändert werden können, doch dies funktionierte nicht wirklich...
... und zu welchem Zweck benötigst du dieses "Feature"?
Ich möchte denjenigen die Möglichkeit geben die Session beizubehalten, die die Cookies deaktiviert haben.
Die Startseite enthält ein Formular mit der GET-Übertragungsmethode. Danach kommt eine Auflistung der gefundenen Datenbankeinträge. Anschliessend kommt die Seite für eine Detailansicht des jeweiligen Eintrages.
Die Session benötige ich dazu, um die Parameterauswahl im Formular bei Rückkehr (Zurück via Browsermenue) beizubehalten.
LG Eli
Hello,
Ich möchte denjenigen die Möglichkeit geben die Session beizubehalten, die die Cookies deaktiviert haben.
Da verwechselst Du Ursache und Wirkung.
Wer eine Session will, muss auch das dafür vorgesehene technische Verfahren unterstützen.
Sonst gibt es eben keine.
Dass es anders mehr schlecht als recht möglich ist, liegt wahrscheinlich daran, dass zuviele Webprogrammierer das Gehampel um die Cookies mitmachen.
Ein harzliches Glückauf
Tom vom Berg
Hallo.
Dass es anders mehr schlecht als recht möglich ist, liegt wahrscheinlich daran, dass zuviele Webprogrammierer das Gehampel um die Cookies mitmachen.
Die einen mehr, die anderen weniger.
MfG, at
(Hallo|Hi(ho)|Tag) Eliane82,
Danke für Eure schnellen Antworten!
Die hier kommt etwas später ... ;-)
Die Sessions-ID bleibt immer gleich. Das Formular dazwischen arbeitet mit der GET-Methode. Doch welche Möglichkeit gibt es, um die benutzte Sessions-ID auf der Start- bzw. Eintrittseite ausfindig zu machen.
Wenn du mit den Sessionfunktionen von PHP arbeitest, erfährt das Script automatisch, ob eine Session-ID übermittelt wurde. Allerdings passiert es, dass beim "Zurückblättern" per Back-Button oder Browser-Menü der Browser gar nicht erst den Server kontaktiert. Dann erfährt das Server-Skript natürlich auch nichts von der Aktion (kann also auch die Session-ID nicht ausfindig machen).
Eine Möglichkeit wäre vielleicht eine Änderung der Sessionskonfigurationsdatei auf dem Server, doch für diese habe ich keinen Zugriff. Des Weiteren sah ich in einem Forum, dass diese Konfigurationsparameter auch manuell auf jeder Seite im Headerbereich geändert werden können, doch dies funktionierte nicht wirklich...
Wie schon oben erwähnt: Wenn der Browser keine Anfrage an den Server schickt, kannst du auf dem Server herumkonfigurieren wie du willst -- es hat keine Auswirkung.
Ich möchte denjenigen die Möglichkeit geben die Session beizubehalten, die die Cookies deaktiviert haben.
Das ist ja auch gar kein Problem
Mir scheint, dass bei dir ein Missverständnis bezüglich des Ablaufs von Session-basierten HTTP-Requests vorliegt. Speziell für den Fall mit GET-Parameter (also ohne Cookies und ohne POST-Formular) läuft das so ab:
0. Der Client (Browser) schickt die (allererste) Anfrage an den Server. Er weiß nichts von Sessions.
1. Der Server antwortet und schickt eine Web-Seite zurück. In der sind sämtliche Links, die zur Session gehören sollen, mit einem zusätzlichen Parameter (der Session-ID) versehen[1].
2. Ruft der Client jetzt eine dieser speziell verlinkten Seiten ab, vergleicht der Server (oder das Server-Skript) die Session-ID mit seiner Liste (z.B. in einer Datenbanktabelle oder wo auch immer) von gültigen Sessions. Ist die Session-ID gültig, dann macht der Server weiter wie in Punkt 1 beschrieben.
"Blättert" der Browser-Benutzer jetzt zurück, holt der Client (in den meisten Fällen) die schon einmal angeforderte Seite aus seinem Cache. Er teilt dies aber dem Server nicht mit (schickt also keine Anfrage an den Server). Das kannst du vom Server aus nicht verhindern.
Die Startseite enthält ein Formular mit der GET-Übertragungsmethode.
Baue deine Startseite so um, dass alle Links eine Session-ID bekommen. Das gilt auch für das action-Attribut des Formulars, aber nur für den Fall, dass der Browser die Session-ID nicht schon per Cookie geschickt hat. Die Session-ID muss neu generiert werden, wenn beim Aufruf der Startseite keine gültige mit übertragen wurde.
Danach kommt eine Auflistung der gefundenen Datenbankeinträge. Anschliessend kommt die Seite für eine Detailansicht des jeweiligen Eintrages.
Die Session benötige ich dazu, um die Parameterauswahl im Formular bei Rückkehr (Zurück via Browsermenue) beizubehalten.
MffG
EisFuX