Verschwundene Session...

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Verschwundene Session...

    Hallo,

    kleine Denksportaufgabe:

    Ich habe eine Website erstellt, die prinzipiell ganz ohne "Anmelden" etc. funktioniert. Erst für bestimmte Bereiche ist es notwendig, sich zu authentifizieren. Wie immer - jemand gibt seine ID und sein PW ein, wenn's stimmt, wird eine Session initialisiert und die entsprechenden Werte in dieser Session gespeichert.
    Bei jedem Seitenaufruf der Site wird kontrolliert, ob aus $_REQUEST eine PHPSESSID mitgeliefert wird --> wenn ja, wird die Session wieder gestartet.

    Das hat soweit auch ganz gut geklappt, bis jetzt - ein paar Stunden und unzählige Testversuche später - plötzlich das Cookie mit der PHPSESSID verloren geht.

    Folgendes hab ich jetzt schon ausprobiert:[list=1][*]Alle Cookies auf meinem Rechner gelöscht[*]error_reporting(E_ALL | E_STRICT) gesetzt --> kein Fehler, keine Warnung, ...[*]Auskommentieren jeder einzelnen Zeile --> nix gefunden[*]Browser neu gestartet / PC neu gestartet[*]auch zwei andere Browser verwendet (neben IE noch Mozilla und Opera) --> gleiches Ergebnis[*]Mittels echo-Befehlen Zeile für Zeile den Programmablauf mitverfolgt --> alles programmgemäß[*]Mittels print_r($_REQUEST) etc. alles ausgelesen --> PHPSESSID bleibt verschwunden[/list=1]

    Dann habe ich in eine test.php in einem Unterverzeichnis eine weitere Session gestartet, siehe da, dort kommt das Cookie plötzlich retour! Wenn ich dann im selben Browserthread auf die obige Homepage surfe, funktionierts dort auch! Was mir sagt, dass der Fehler (natürlich) doch im Skript liegen muss.

    Aber was - bitte - habe ich zum Prüfen vergessen?

    Danke! Stefan
    Man strahlt hier nicht in Wien - denn bald strahlt es aus Temmelin :-|

  • #2
    Re: Verschwundene Session...

    Original geschrieben von skrejci
    Mittels print_r($_REQUEST) etc. alles ausgelesen --> PHPSESSID bleibt verschwunden
    sieht so aus, dass die session von der aufrufenden seite nicht übermittelt wird.

    lässt sich das problem dahingehend eingrenzen, welches die letzte seite war, von der der aufruf erfolgte?
    warum benutzt du request? kann es sein, dass die sid per get/post manuell übergeben wurde (schreibfehler bezüglich session_name)?

    Kommentar


    • #3
      Hai,

      ja, so sieht es aus.

      Tatsache ist, dass es vor kurzem geklappt hat, und ich dahingehend mit Sicherheit nix verändert habe.

      $_REQUEST verwende ich, damit sich der User zwischen COOKIE und GET selbst entscheiden kann (sprich, wenn einer Cookies ausgeschaltet hat). Ich hoff zumindest, dass das funzt, hab's (noch) nicht genau nachgeprüft.

      An und für sich bevorzugt der Server Cookies. Aber es kommen ja weder Cookies noch GETs an.

      Die Authentifizierung erfolgt so:
      • User kommt zum Authentifizieren auf die login.php
      • Dort gibt er ID und PW ein
      • Nach Absenden ruft sich die Datei selbst auf, ganz am Beginn des Quellcodes wird der LogIn-Vorgang abgefangen (bis dato ist die Session nicht gestartet)
      • ID und PW werden überprüft, wenn richtig --> Session wird gestartet (bis dahin gibt's noch keine Ausgabe), entsprechende Werte werden gespeichert, erst dann kommt die Erfolgsmeldung, dass man erfolgreich eingeloggt ist


      Keine manuelle Übergabe, nie dagewesen.

      session_name rühr ich nicht an, am Server ist PHPSESSID eingestellt, ich hab (bzgl. Schreibfehler) den Wert von dieser einen ominösen, doch funktionierenden Session sogar schon rauskopiert, um sowas zu vermeiden. Hilft leider nix.

      LGs Steve
      Man strahlt hier nicht in Wien - denn bald strahlt es aus Temmelin :-|

      Kommentar


      • #4
        Rote Augen und ein schmerzendes Rückgrat später...

        Ich hab den Fehler gefunden. Ein paar Bytes vor dem Session-Cookie ausgesendet - bis vorhin hatte sich der interne Puffer vermutlich jedes mal erst nach dem Session-Start entleert.
        Aber ein Rätsel bleibt mir immer noch, dass weder headers_sent noch error_reporting() was angezeigt haben. Aber Fehler werden auf meinem System plötzlich überhaupt keine mehr angezeigt... Naja. Hauptsache das funzt jetzt wieder. Danke!
        Man strahlt hier nicht in Wien - denn bald strahlt es aus Temmelin :-|

        Kommentar


        • #5
          -
          Zuletzt geändert von 3DMax; 26.08.2006, 00:39.

          Kommentar

          Lädt...
          X