session_destroy()

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • session_destroy()

    Ich habe ein problem das ich nicht gelöst bekomme, ich habe schon alles ausprobiert und das web wundgesucht.

    also das problem ist:

    wenn ich den button logout benutze ist alles bestens.

    PHP-Code:

        session_unset
    ();
        
    session_destroy();
        unset(
    $aid$rid$out$oldtime); 

        
    header("Location: ../index.php?logout=true");
        exit; 
    und ich kann mich normal wieder anmelden, für den rausschmiß über eine zeitangabe funktioniert das aber nicht.
    ich komme nicht mehr rein.

    wenn ich denn folgenden code nehme geht´s, aber ich muß mich zweimal oder sogar dreimal wieder anmelden, weil er mir beim ersten oder zweiten mal anzeigt das die zeit abgelaufen ist.

    PHP-Code:

    session_start
    ();

          if(!
    session_is_registered("rid"))
          {
            
    header("Location: [url]http://www.kaninchen-schau.de[/url]");
          }
          
    //timeout
          
    $aktime time(); //aktuellle zeit

          // out und oldtime = session variable

          
    if(($aktime $oldtime) > $out)   //wenn zeit überschritten rausschmeißen
          
    {
            
    // Unset all of the session variables.
            
    $_SESSION = array();

            
    // If it's desired to kill the session, also delete the session cookie.
            // Note: This will destroy the session, and not just the session data!
            
    if(isset($_COOKIE[session_name()]))
            {
              
    setcookie(session_name(), ''time()-3600'/');
            }
            
    session_destroy();

            
    header("Location: [url]http://www.kaninchen-schau.de/include/timeout.inc.php[/url]");

          }
          else 
    //sonst neue zeit setzen
          
    {
            
    $oldtime $aktime;
          } 
    wo liegt das problem oder was ist verkehrt.

    gruß LJ80

  • #2
    wo werden
    $aktime
    $oldtime
    $out
    gesetzt?
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      wo werden
      $aktime
      ...
      gesetzt?
      PHP-Code:
      $aktime time(); //aktuellle zeit 


      Btw: session_is_registered ist veraltet, verwende isset( $_SESSION['foo'] )

      Kommentar


      • #4
        $aktime wird wie im code steht mit aktueller zeit gesetzt und $oldtime und $out werden im login check script als session variablen gesetzt.

        ist eure frage damit beantwortet?

        Kommentar


        • #5
          Du solltest korrekt auf die Sessionwerte zugreifen, indem du das $_SESSION-Array verwendest. Dein Aufruf würde sich damit in $_SESSION['oldtime'] bzw. $_SESSION['out'] ändern.
          Bei dem Login musst du natürlich nicht auf einen Timeout prüfen, da deine Sessionwerte da noch nicht gesetzt sein werden!

          Kommentar


          • #6
            Und du hast natürlich das error_reporting() hochgedreht und die Anzeige von PHP Fehlern aktiviert, so wie es in den Board Regeln steht...
            Also kommen keine Fehlermeldungen (v.a. Notices)?
            Btw: Stichwort register_globals() Dein Code scheint auf globals ON angewiesen zu sein. Ich würde dir empfehlen das Ganze auf globals OFF zu proggen
            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
              ich überprüfe im login auch nicht auf timeout das ist erst auch dem memberbereich eingebunden.

              es funktioniert ja mit den variablen, ob direkt oder über $_SESSION[].

              das problem ist ja das die session offensichtlich nicht richtig gelöscht werden, oder ich das ganze anders umsetzen muß, damit sich ein angemeldeter user nach dem timeout nicht zwei oder dreimal einloggen muß um wieder in den memberbereich zu kommen.

              Kommentar


              • #8
                Original geschrieben von PHP-Desaster
                PHP-Code:
                $aktime time(); //aktuellle zeit 


                Btw: session_is_registered ist veraltet, verwende isset( $_SESSION['foo'] )
                Jo schon klar, aber wo der rest?
                Denn das ausloggen ist in dem gegebenen Code von diesen Variablen abhängig.
                Beantworte nie Threads mit mehr als 15 followups...
                Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                Kommentar


                • #9
                  sorry, aber ich verstehe nicht was du gerade willst!?

                  sprich deutsch mit mir, bittttttttttttte.

                  oder ich stehe gerade auf dem schlauch?

                  Kommentar


                  • #10
                    $aktime = time();
                    if(($aktime - $oldtime) > $out) {
                    logout
                    }
                    so wenn jetzt in $oldtime eine kleine Zahl steckt oder nichts wirst Du ausgelogged, also frage ich mich was in den verwendeten Vars steckt, da Du das im Code nicht preisgibst
                    Beantworte nie Threads mit mehr als 15 followups...
                    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                    Kommentar


                    • #11
                      das steht doch im code.

                      im elsezweig.

                      wenn der user innerhalb der zeit arbeitet wird die zeit neu gesetzt und der user kann normal weiterarbeiten.

                      ich verstehe nicht was das mit dem logout zu tun hat.


                      das ganze zeitüberprüfen funktioniert einwandfrei nur das logout über den timeout löscht offensichtlich nicht richtig.

                      Kommentar


                      • #12
                        das steht doch im code.

                        im elsezweig.

                        wenn der user innerhalb der zeit arbeitet wird die zeit neu gesetzt und der user kann normal weiterarbeiten.

                        ich verstehe nicht was das mit dem logout zu tun hat.


                        das ganze zeitüberprüfen funktioniert einwandfrei nur das logout über den timeout löscht offensichtlich nicht richtig.

                        Kommentar


                        • #13
                          Und wieso musst du deine Antwort zweimal schicken? Sag jetzt nicht, dass sein ein Fehler der Foren-SW, weil zwischen den Posts liegen 14 Minuten...
                          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

                          Lädt...
                          X