unset - Vars werden nicht ungesettet

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

  • unset - Vars werden nicht ungesettet

    PHP-Code:
    if ((isset($_SESSION['objLogin'])) AND ($_SESSION['objLogin']->logged() == true)){ 
        echo 
    "du bist angemeldet --> <a href=\"?logout\">Logout?</a>";
    }else{
        echo 
    "du musst angemeldet sein";
    }

    if(isset(
    $_GET['logout'])){
        
    $_SESSION['objLogin']->logout();
        unset(
    $_SESSION['objLogin']);
        unset(
    $_GET['logout']);
        
    $_SESSION['token_Login'] = 1;

    Logischerweise dürfte nach einem klick auf LOGOUT, die bedingung
    PHP-Code:
    if ((isset($_SESSION['objLogin'])) AND ($_SESSION['objLogin']->logged() == true)){ ... 
    nicht mehr erfüllt sein?


    Mein Problem, nach dem klick auf Login, wird die bedingung immer noch erfüllt? Warum? ich hab doch

    PHP-Code:
      unset($_SESSION['objLogin']); 
    ausgeführt


    PS: das macht sich daher bemerkbar, da weiterhin "du bist angemeldet --> Logout?" im browser angezeigt wird

  • #2
    Session ist nicht weg...


    session_unset();
    session_destroy();

    DANN ist sie futsch.
    Erst meckern, dann helfen!

    Kommentar


    • #3
      dann sind meine anderen in session gespeichertew variablen aber auch weg, und das will ich ja nich ?

      Kommentar


      • #4
        $_SESSION['objLogin']=NULL;
        Slava
        bituniverse.com

        Kommentar


        • #5
          hilft auch nich weiter, anzeige bleibt besthen.

          nach einem weiteren klick darauf, ist anzeige jedoch weg,, aber fehlermeldung wird logischerweise ausgegeben:
          Call to a member function logout() on a non-object ..

          Kommentar


          • #6
            Wird die Session ID im Cookie durchgeschleift ? Dann vllt auch mal den Cookie löschen...
            Hast du auch schon probiert nach dem unset() einen header('Location:...') auf die gleiche Seite zu machen ? Wird dann die Bedingung immer noch erfüllt ?
            Wenn ja dann mal ein var_dump($_SESSION) machen und die Daten anschauen.
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              Eventuell die if's mal umdrehen?

              Weil wenn es so da steht, guckt er ja erst ob du noch eingelogt bist und logt dich danach aus.

              PHP-Code:

              if(isset($_GET['logout'])){
                  
              $_SESSION['objLogin']=NULL;
                  unset(
              $_GET['logout']);
                  
              $_SESSION['token_Login'] = 1;
              }

              elseif ((isset(
              $_SESSION['objLogin'])) AND ($_SESSION['objLogin']->logged() == true)){ 
                  echo 
              "du bist angemeldet --> <a href=\"?logout\">Logout?</a>";
              }else{
                  echo 
              "du musst angemeldet sein";

              gehts so?
              Erst meckern, dann helfen!

              Kommentar


              • #8
                Original geschrieben von sypr0
                hilft auch nich weiter, anzeige bleibt besthen.

                nach einem weiteren klick darauf, ist anzeige jedoch weg,, aber fehlermeldung wird logischerweise ausgegeben:
                Call to a member function logout() on a non-object ..
                hasst du statt
                $_SESSION['objLogin']=NULL;
                so
                $_SESSION['objLogin']='NULL'; gemacht?
                Slava
                bituniverse.com

                Kommentar


                • #9
                  @slava: ne hab ich nicht

                  PHP-Code:
                  <?php

                  session_cache_limiter
                  ('nocache');
                  include_once(
                  'login_functions.php');
                  session_start();
                  if (
                  $_SESSION['token_Login']==1)
                  {
                  header("Location: login.php");
                  header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
                  header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Datum in der Vergangenheit
                  exit;
                  unset(
                  $_SESSION['token_Login']);
                  }
                  das is der anfang meiner datei mit header("location...

                  wird aber weiterhin angezeigt und var dump zeigt mir weiterhin die inhalte der session an.

                  wenn ich cookie lösch dann gehts, allerdings, stehen in dem cookie noch andere Session variablen drin, die ich nich löschen möchte

                  ps: und schon mal danke, für euer bemühen
                  Zuletzt geändert von sypr0; 31.08.2007, 14:16.

                  Kommentar


                  • #10
                    was willst du mit datum in vergangenheit erreichen?
                    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
                    gerade das Interpretiert der browser so, dass er Cache benutzen darf
                    Slava
                    bituniverse.com

                    Kommentar


                    • #11
                      damit wollte ich eigentlich verhindern dass gecached wird (hab ich von php.net),

                      mir is aufgefallen, dass var_dump($_SESSION) erst Inhalte anzeigt, NACHDEM der LOGOUT ausgewführt wurde, obwohl ich das gleich nach session_start() reingehängt habe

                      Kommentar


                      • #12
                        nach einem weiteren klick darauf, ist anzeige jedoch weg,, aber fehlermeldung wird logischerweise ausgegeben:
                        Ich hatte irgendwie gleiches Problem, was schlicht daran lag, dass ich erst geguckt habe ob derjenige eingelogt ist und dann die if-Abfrage zum auslogen kam.

                        Ergebnis, er zeigt immernoch den Kram beim eingelogt sein an, man IST aber schon ausgelogt, wesshalb das zweite mal drauf klicken auch so ein Resultat brachte.
                        Erst meckern, dann helfen!

                        Kommentar


                        • #13
                          deshalb schrieb ich auch, dass es verständlich ist, dass Fehlermeldung kommt.

                          Und uich bin grad bissle ratlos, wie ich es hinbekommen sollte(ausser mit der cokkie-lösch methode), das bedingung nicht mehr erfüllt wird

                          Kommentar


                          • #14
                            Gavyns lösung v. obenfunktioniert. ist das die sinnvollste ??

                            bzw. gibts was eleganteres??
                            Zuletzt geändert von sypr0; 31.08.2007, 14:00.

                            Kommentar

                            Lädt...
                            X