Session nach Browser zurück Klick

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

  • Session nach Browser zurück Klick

    Liebes Forum Team,

    ich habe ein Problem. Bitte helft mir doch. Mein Problem ist das die Session zwar zerstört wird, aber nicht zerstört wird, wenn ich im Browser den Button Zurück klicke.

    Warum ist das so und wie kann ich das ändern? Irgendwie komm ich nicht weiter. Irgendwas ist unklar? $_SESSION 's funktionieren bei mir über Cokkies. Und ich glaube es liegt daran. Weil die Session Id wieder aus dem Browser Cache geholt wird ,wenn ich zurück klicke, sind auch die Daten aus der Session wieder da. Ich habs schon mit session_destroy() , unset($_SESSION['......']) und einer zusätzlichen Variable die ja nach dem true oder false ist versucht zu lösen. Aber auch mit der ist es,nach dem Zurück klicken im Browser das selbe Spiel. Die Session Daten sind wieder da.

    Ich dreh mich im Kreis. Wie kann ich es am besten umsetzen? Wie macht man das in der Praxis? Was ist am sichersten? Welche Überlegungen würdet ihr anstellen, um das zu lösen. Jede Anregung hilfs sehr.

  • #2
    Re: Session nach Browser zurück Klick

    Original geschrieben von Hechthunter
    Wie kann ich es am besten umsetzen?
    keine ahnung, wie du es bisher machst, aber im manual findest du ein komplettes beispiel:
    session_destroy()

    Kommentar


    • #3
      Die Seite kommt aber nicht aus dem Browsercache, oder?

      Kommentar


      • #4
        Hab mir session_destroy() gerade dort angesehen. session_destroy() hab ich ja schon aufgrufen. da wo der Klick logout erkannt wird. Mmh Jetzt ist mir klar geworden,das ich die ganze Zeit mit der Id aus dem COOKIE gearbietet hab und mit der Id aus der $_SESSION die inebenbei die ganze Zeit nicht sichtbar mit gegeben wird
        Die Ausgabe war
        PHP-Code:
        print_r($_COOKIE);
        /*
        Array
        (
            [PHPSESSID] => dfa92be005ca0c94127f17e6aa424188
        )
        */
        print_r($_SESSION["sid"]);
        /*
        Array
        (
        [sid] => 748f491f18735341e2950d91e20db60e
        )
        */ 
        Ist das falsch wenn man mit beiden arbeitet? Wenn ja warum? Ich versteh das nicht.

        MmMh mal denken...: Die ID aus dem Cokkie Array wird erst erneuert wenn der Browser neu aufgerufen wird.
        Die Daten aus der Session zur SESSION ID aus dem Session Array sollen gelöscht werden, wenn Logout geklickt wird. In der Funktion die ich da zusammengeschustert habe wird auch session_destroy() verwendet; Aber die $_SESSION["sid"] wird nicht erneuert, trotz session_destroy().

        Mich würde es freuen, wenn durch Klicken auf Logout das Komplette SESSION Array erneuert wird mit nichts drin. Sozusagen eine inaktive Session. Und noch besser wärs wenn man dem Browser vorgaukeln könnte das er zwischenzeitlich geschlossen wurde, damit dann das Problem mit dem Browser zurück Button gelösst werden kann. Geht sowas ? Bietet Php die Lösung oder bin ich auf dem Holzweg.

        Kommentar


        • #5
          Original geschrieben von onemorenerd
          Die Seite kommt aber nicht aus dem Browsercache, oder?
          wie meinst du das? Steht das nicht alles im Browsercache ? Also Personenzogene Daten kann ich bislang mir über das $_SESSION Array ansehen. Die dort enthaltenen Daten kommen aus der Datenbank passend zu Person. Die zugehörige Id steht ebenfalls in der Datenbank . Überflüssige Session werden wieder aus der db gelöscht. Ist doch richtig oder ?

          Kommentar


          • #6
            Wenn man alle zu einer Session zugehörigen Daten wie auf der oben verlinkte Seite löscht, dann sind sie weg. Sie existieren nicht mehr auf dem Server, er kann sie also gar nicht wieder ausliefern.
            Wenn du mit dem Browser zurück gehst und dort Sessiondaten siehst, dann kommt die Seite entweder aus irgendeinem Cache oder du hast die Session nicht wirklich gelöscht.
            Caching kann mit geeigneten HTTP-Headers verhindert und Sessions mit print_r() und direktem Blick in session.save_path verfolgt werden.

            Kommentar


            • #7
              ich verstehe auch nicht, was du in $_SESSION["sid"] reinschreibst und wie du es in deinem script verarbeitest.

              session_start() nimmt eine alte session wieder auf (get, post, cookie) oder startet eine neue. also, was veranstaltest du mit $_SESSION["sid"]?

              Kommentar


              • #8
                Original geschrieben von 3DMax
                ich verstehe auch nicht, was du in $_SESSION["sid"] reinschreibst und wie du es in deinem script verarbeitest.

                session_start() nimmt eine alte session wieder auf (get, post, cookie) oder startet eine neue. also, was veranstaltest du mit $_SESSION["sid"]?
                Also, die $_SESSION["sid"] enthält die aktuelle session_id() die von session_start() gesendet erzeugt wurde. Somit weis isch das dieses Session Array eindeutig einem User zugeordnet ist und speicher dort seine daten darin, welche aus der Datenbank kommen. z.B zb.Beispiel $_SESSION['username'] = wert aus Schleife . Den Wert aus der Schleife gehört dan zu dieser sid ermittelt durch session_id()
                Ich dachte mir dabei es ist ein globales personenbezogenes Array ist und man den Inhalt halt nutzen kann. Kein anderer die Daten sieht. Ist doch richtig die Überlegung Oder? Dafür ist das globale Array($_SESSION) doch da Oder? soll ich den Code in Bezug auf session_register() ändern? Da hab ich gelsen das das veraltete ist.

                Kommentar


                • #9
                  Original geschrieben von Hechthunter
                  Ich dachte mir dabei es ist ein globales personenbezogenes Array ist und man den Inhalt halt nutzen kann. Kein anderer die Daten sieht. Ist doch richtig die Überlegung Oder? Dafür ist das globale Array($_SESSION) doch da Oder?
                  Wenn du annimmst, dass es über die "Verbindung" zu unterschiedlichen Clients hin "global" ist, irrst du.

                  Sessions dienen lediglich dazu, Daten einem bestimmten Client eindeutig zuzuordnen.

                  Und die SID in der Session abzulegen, ist überflüssiger Nonsense.
                  Die Zuordnung zu einem bestimmten Client geschieht über die SID - aber dazu muss diese nicht in die Session hineingestopft werden.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Original geschrieben von onemorenerd
                    Wenn man alle zu einer Session zugehörigen Daten wie auf der oben verlinkte Seite löscht, dann sind sie weg. Sie existieren nicht mehr auf dem Server, er kann sie also gar nicht wieder ausliefern.
                    Wenn du mit dem Browser zurück gehst und dort Sessiondaten siehst, dann kommt die Seite entweder aus irgendeinem Cache oder du hast die Session nicht wirklich gelöscht.
                    Caching kann mit geeigneten HTTP-Headers verhindert und Sessions mit print_r() und direktem Blick in session.save_path verfolgt werden.
                    session.save_path habe ich mir über die phpinfo() anzeigen lassen. Da steht no value.

                    Wenn ich bei GMX logout klicke und dann im Browser zurück klicke. Stehen meine Daten auch wieder da, bis ich auf einen Link klicke dann werde muss ich die ogin Daten wieder eingeben. EBAY hat das besser gelösst.
                    Ich glaube ich muss das noch mal von vorne begreifen. Gibt diesbezüglich hier ein gutes Tutorial?

                    Kommentar


                    • #11
                      Original geschrieben von wahsaga
                      Wenn du annimmst, dass es über die "Verbindung" zu unterschiedlichen Clients hin "global" ist, irrst du.

                      Sessions dienen lediglich dazu, Daten einem bestimmten Client eindeutig zuzuordnen.

                      Und die SID in der Session abzulegen, ist überflüssiger Nonsense.
                      Die Zuordnung zu einem bestimmten Client geschieht über die SID - aber dazu muss diese nicht in die Session hineingestopft werden.
                      Ja stimmt dient eigendlich nur zur Übersicht für mich, damit ich weis mit welcher Id gerade gearbeitet wird.
                      Nein ich meinte mit global das $_SESSION Array clientseitig. Also das zugreifen auf dem Inhalt des Arays nur über den dem die Session gehört identifiziert durch die session id.

                      Funktioniert auch aber mir scheint es nicht richtig weil sichtbar wenn im Browser zurück geklickt geklickt wird, obwohl vorher die Session zerstört wurde, ist die alte Id wieder sichtbar und erst neu wenn ein Request gesendet wurde. Das ist mir ein Rätsel und irgendwie kann ich das nicht umsetzen.

                      Kommentar


                      • #12
                        Original geschrieben von Hechthunter
                        Funktioniert auch aber mir scheint es nicht richtig weil sichtbar wenn im Browser zurück geklickt geklickt wird, obwohl vorher die Session zerstört wurde, ist die alte Id wieder sichtbar und erst neu wenn ein Request gesendet wurde.
                        Ist das so schwer zu kapieren, dass Browser Caches haben, und sie ggf. die alte Seite noch mal daraus holen und anzeigen ...?
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          Original geschrieben von wahsaga
                          Ist das so schwer zu kapieren, dass Browser Caches haben, und sie ggf. die alte Seite noch mal daraus holen und anzeigen ...?
                          Mein Gott, Ich bitte vielmals um Entschuldigung das ich hier eine Frage stelle. Mir ist schon klar das Browser Caches haben.

                          Ich glaube du verstehst meine Frage nur leider nicht!

                          Es geht darum das das nicht möglich sein soll. Dein gut gemeinter header Vorschlag bringt leider garnichts und ist auch nicht gerade logisch nachvollziehbar für mich jedenfalls. wenn ich das mal sagen darf. Ich habe folgenden probiert .

                          PHP-Code:
                          header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
                          header("Last-Modified: " gmdate("D, d M Y H:i:s") ." GMT");
                          header("Cache-Control: no-cache");
                          header("Pragma: no-cache");
                          header("Cache-Control: post-check=0, pre-check=0"FALSE); 
                          Offensichtlich ist das es eine Lösung geben muss, das zu verhindern, aber dein Vorschlag leider keine Lösung mit sich bringt oder ich mich wirklich zu ... anstelle.

                          Wie wärs wenn du mich nicht fragst ob irgendwas schwer zu kapieren ist? Das führt an der Sache vorbei.

                          Ich wäre wirklich jedem dankbar der schon mal das selbe Problem hatte.



                          Danke schon mal im Vorraus.

                          Kommentar


                          • #14
                            Nagut jetzt gehts. War wohl doch zu blöd.

                            Das gepostete über session_start().

                            Schon klappts auch mit dem Browser zurück button.

                            Danke fürs wachrütteln.

                            Sorry.

                            Kommentar

                            Lädt...
                            X