POST soll bei zurück nicht nochmal ausgeführt werden.

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

  • POST soll bei zurück nicht nochmal ausgeführt werden.

    Hallo,

    ich habe hier ein Formular, welches den Nutzer anmeldet und
    dann und die Daten per POST an sich selbst reicht. An sich selbst ist deshalb wichtig, da das script nur von anderen Seiten includiert werden und der Ersteller dieser anderen Seiten möglichst nichts damit zu tun haben will außer meine Überprüfung zu includen.

    Wenn sich nun der User erfolgreich eingeloggt hat wird per POST die Variable $login gesetzt und somit setzt mein Script die Session-Daten.
    Der User kann sich nun auf den Seiten bewegen.

    Wenn er sich dann aber ausloggt oder die Session verfallen lässt, kann er sich mit dem Zurück-Button bis zu dem Zeitpunkt vorarbeiten, in dem die POST-Daten gesendet wurden. Hier ist der Knackpunkt. Wenn der Browser diese Daten erneut sendet, wird mein Script wieder aufgerufen und schwups ist eine neue session da.

    Kann man das irgendwie verhindern?

  • #2
    Re: POST soll bei zurück nicht nochmal ausgeführt werden.

    Original geschrieben von neogrande
    Kann man das irgendwie verhindern?
    ja, indem du die SUCHE benutzt, ist nicht das erste mal, dass diese frage kommt.
    Kissolino.com

    Kommentar


    • #3
      Das tolle an der Such-Funktion bei diesem Thema ist:

      Entweder sie liefert mir 0 Treffer. (war vor diesem Thread so)
      oder sie liefert mir >1000 Treffer mit Titeln wie
      "Problem mit Login-Script".
      Und alle, die ich bisher gelesen habe, hatten genau das gegenteilige Problem, dass sie Formulardaten behalten wollten....
      *naja_und_weitersuch*

      Kommentar


      • #4
        Das problem tritt ja nicht nur bei Login-Scripts auf sondern bei allen Formularen. Du solltest deine Suchmethoden verbessern

        Kommentar


        • #5
          Danke für den Tipp, hab mich bisher auf sessions beschränkt...
          Zuletzt geändert von neogrande; 16.09.2004, 15:18.

          Kommentar


          • #6
            also header("Location : $self") wusste ich ja schon - dachte nur, dass das bei meinem aktuellen Problem nicht geht, aber anscheinend ist das doch die Lösung.

            Aber kann es sein, dass IE 5.5 bei diesem header die Session-Daten verliert? - mit dem kommt nämlich gleich wieder das Login-Formular, als wäre die Seite aus dem Nichts geladen worden.



            Mit IE 6.0 funktionierts - zeigt bei zurück nach Abmeldung zwar noch die geschützten Inhalte an, aber die session bleibt zu und bei irgendeinem klick heißts Neuanmeldung.

            Beim Firebird funzt es auch - der zeigt mir sogar nur noch login-fenster an, wenn ich nach einem Abmelden auf zurück klicke.

            (achja - durch die neue Erkenntnis, konnte ich natürlich mit "Location" ein paar passendere Einträge finden und habe sie mir zu Gemüte geführt, aber von Browser-Unterschieden habe ich nichts gelesen)


            [EDIT] da es auch im Opera und auf einem anderen Rechner mit IE 6.0 nicht geht, muss es am script liegen, aber wieso gehts dann im Firebird? PHP wird doch vom Server ausgeführt....
            Zuletzt geändert von neogrande; 16.09.2004, 16:13.

            Kommentar


            • #7
              für den fall, daß die sid nicht in einem cookie steckt, mußt du sie im header angeben ...
              Die Zeit hat ihre Kinder längst gefressen

              Kommentar


              • #8
                Das Script funktioniert über cookies.

                hier mal der Code:

                PHP-Code:
                session-start();
                if (
                $_SESSION["s_user_seri"]!=null$s_user unserialize($_SESSION["s_user_seri"]);
                $login $_POST['login'];
                if (isset(
                $login))        //Wird aufgerufen, wenn das Login-Formular betätigt wurde
                {
                  unset(
                $login);
                  
                $name $_POST["name"];
                  
                $passwd $_POST["passwd"];  
                  
                $s_user = new user;
                  
                $s_user->einloggen($name$passwd);
                  if (
                $s_user->getLogin())
                  {
                    
                $s_user_seri serialize($s_user);
                    
                $_SESSION["s_user_seri"] = $s_user_seri;
                    
                header("Location:".$_SERVER["PHP_SELF"]);
                  }

                Wenn das Login also aufgerufen wurde, wird der User eingeloggt, serialisiert, gespeichert und das script selbst wieder aufgerufen, wo er eigentlich wieder aufgerufen werden müsste.
                Wird er ja wohl im Firebird auch (und ohne das header() funktionierts ja auch über mehrere Seitenaufrufe hinweg)

                Kommentar


                • #9
                  Das Script funktioniert über cookies.
                  ich meinte eigentlich, daß du überprüfen solltest, ob wirklich ein cookie gesetzt wird
                  Die Zeit hat ihre Kinder längst gefressen

                  Kommentar


                  • #10
                    oups sorry - davon war ich einfach mal ausgegangen ;-)

                    Nun, wenn ich das header() mal weglasse, funktioniert alles,
                    sprich das cookie wurde gesetzt.
                    (session.use_trans_sid ist aus, und ich übergebe die SID nicht anderweitig.)

                    Ich habe aber jetzt (glaube ich) die Ursache meines Problems:

                    Ich hatte zu Test-Zwecken meine Cookie-Lifetime auf 5 Sekunden gestellt (man möchte ja nicht immer ewig warten, wenn man das verfallen testen will).
                    Das war dem IE beim weiterleiten offenbar zu wenig, denn bei einem normalen Wert (3600 z.B.) funktionierts.

                    Warum, ist mir zwar nicht klar (er braucht ja keine 5 Sek. zum weiterleiten), aber es löst das aktuelle Problem

                    Ich danke dir für deine geduldige Nachhackerei.

                    Kommentar

                    Lädt...
                    X