session - frames - logout funzt net

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

  • session - frames - logout funzt net

    hi,

    ich hab nen hauptfenster mit zwei frames, im navi fenster hab ich nen link zu ner datei logout.php die eigentlich die session beenden soll, aber wenn man auf zurück klickt ist man immer noch angemeldet, hat php nen prob mit frames? ich habs mal ohne frames probiert da hat es funktioniert

    ich zeig euch auch mal den code:

    main.php
    PHP-Code:
    <?php session_start(); ?>
    <html>
    <head>
        <title>Final War</title>
        <link rel="stylesheet" type="text/css" href="stylesheet/standart.css">
        <script type="text/javascript">
        <!--
         if(top!=self)
              top.location=self.location;
        //-->
        </script>
    </head>

    <?php
        
    include("db.php");
        
        
    // nicht eingeloggt
        //echo $_SESSION["logged"]."<br>";

        
    if ( !isset($_SESSION["logged"]) || $_SESSION["logged"] == 0) {

            
    //echo $login_username."<br>".$login_passwort."<br>";
            //Logindaten überprüfen
            
    if ( isset($login_username) && isset($login_passwort) ) {
                
    $id check_login($login_usernamemd5($login_passwort));

                
    $login_username "";
                
    $login_passwort "";

                
    // benutzerdaten laden und in session speichern
                
    if ($id 0) {
                    
    $_SESSION["ID"] = $id;

                    
    initUser($id);
                    
                    
    $_SESSION["logged"] = 1;
                }    
                
    // fehlermeldung anzeigen
                
    else {
                    if (
    $id == -3)
                        echo 
    "<br><br><br><center>Pech gehabt, du bist gesperrt<br>";
                    else if (
    $id == -4)
                        echo 
    "<br><br><br><center>Etwas Geduld bitte, du bist noch nicht freigeschaltet<br>";
                    else {
                        echo 
    "<br><br><br><center>Du hast einen falschen Namen oder ein falsches Passwort eingegeben<br>";
                        echo 
    "<br><a href=\"index.php\">Zum Login</a><br></center>";        
                    }
                }
            }
            
    // Fehler beim einloggen (keine Daten verfügbar)
            
    else {
                echo 
    "<br><br><br><center>Beim einloggen ist ein Fehler aufgetreten, probier es bitte erneut!<br>";
                echo 
    "<br><a href=\"index.php\">Zum Login</a><br></center>";
            }
        }
        
    // Spiel anzeigen, falls der Benutzer erfolgreich eingeloggt ist
        
    if ( isset($_SESSION["logged"]) && $_SESSION["logged"] == ) {        
    ?>
        
    <?php
            
    if ($_SESSION["spieler"]->nick == root) {
                echo 
    "<frameset rows=\"*\">";
                echo 
    "<frame src=\"root.php\" name=\"Root\">";
            }
            else {
    ?>
            <frameset rows="100,*">
              <frame src="top.php" name="Navigation">
              <frame src="uebersicht.php" name="Daten">          
    <?php
            
    }
    ?>
        <noframes>
                Ihr Browser kann diese Seite leider nicht anzeigen!
          </noframes>
        </frameset>
    <?php
        
    }
    ?>

    </html>
    logout.php
    PHP-Code:
    <?php session_start(); ?>
    <html>
    <head>
        <title> </title>
        <link rel="stylesheet" type="text/css" href="stylesheet/standart.css">
        <script type="text/javascript">
        <!--
         if(top!=self)
              top.location=self.location;
        //-->
        </script>
    </head>

    <body>
    <?php    
        $login_username 
    "";
        
    $login_passwort "";
        
    $HTTP_POST_VARS["login_username"] = "";
        
    $HTTP_POST_VARS["login_passwort"] = "";
        
    $_SESSION["logged"] = 0;
        
    // Löschen aller Session-Variablen.
        
    $_SESSION = array();
        
    // Zum Schluß, löschen der Session.
        
    echo session_destroy();

        echo 
    "Session beendet !?";


    ?>
    </body>
    </html>
    Logout.php
    PHP-Code:
    <html>
    <head>
        <title> </title>
        <link rel="stylesheet" type="text/css" href="stylesheet/standart.css">
    </head>

    <body>
        TOP
        <a href="logout.php">Logout</a>
    <?php



    ?>
    </body>
    </html>
    oder liegt mein fehler anderswo? beziehen sich zum beispiel die $login_username auf unterschiedliche wuellen?
    verantwortlich für Elygor - Das kostenlose Browserspiel

  • #2
    weiss niemand was?
    verantwortlich für Elygor - Das kostenlose Browserspiel

    Kommentar


    • #3
      session-destroy

      Kommentar


      • #4
        naja siehe oben

        session_destroy benutze ich ja, ich vermute ja das hängt mit den frames zusammen, irgendwie ...
        verantwortlich für Elygor - Das kostenlose Browserspiel

        Kommentar


        • #5
          haste unset($_SESSION); benutzt?

          Kommentar


          • #6
            nee

            meine logout.php hab ich ja oben gepostet, ich probiers mal ..
            verantwortlich für Elygor - Das kostenlose Browserspiel

            Kommentar


            • #7
              ändert nix am problem
              verantwortlich für Elygor - Das kostenlose Browserspiel

              Kommentar


              • #8
                vermutlich wird deine Datei beim "zurück" einfach aus dem Cache geladen.

                Kommentar


                • #9
                  ich hab mal mich mal was umgeschaut

                  also wenn man die daten per post überträgt, und dann auf back drückt, lädt der browser die logindaten erneut ausm cache,daher sind die logindaten wieder da,

                  da steht auch ne lösung aber ich weiss net wie ich die implementieren kann:

                  ok, ich hatte das gleiche problem, und habe lange gesucht, jetzt habe ich endlich die perfekte loesun gefunden. direkt nach dem login sendet man einen header an den client, der zu einer weiterleitung fuehrt. dann kann man die seite, an die die logindaten urspruenglich geschickt wurden, nicht mehr per zurueck button erreichen.
                  der header ist ja schon gesendet wenn ich das passwort überrüft habe ...
                  verantwortlich für Elygor - Das kostenlose Browserspiel

                  Kommentar


                  • #10
                    Ist er nicht! Der header ist erst gesendet, wenn du <html> ausgibst,

                    Kommentar


                    • #11
                      so ich habs nun

                      hab die frames entfernt
                      alle whitespaces (die waren schuld das header nicht gefunzt hat)
                      und header eingefuegt
                      verantwortlich für Elygor - Das kostenlose Browserspiel

                      Kommentar


                      • #12
                        alle whitespaces (die waren schuld das header nicht gefunzt hat)
                        wie meinen

                        Kommentar


                        • #13
                          falsch sobald du irgendwas ausgibst und wenn es nur nen blank ist wird der header verschickt, ansonsten hätte ich keine fehlermeldung bekommen, die verschwunden ist als ich hinter dem ?> die leerzeichen entfernt habe
                          verantwortlich für Elygor - Das kostenlose Browserspiel

                          Kommentar

                          Lädt...
                          X