Ankündigung

Einklappen
Keine Ankündigung bisher.

Session mit Browser schließen

Einklappen

Neue Werbung 2019

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

  • Session mit Browser schließen

    Hoho, die überschrift sagt wohl schon so ziemlich was ich vorhabe. ich möchte die Session mit dem Browser beenden. Ich weiß das es geht, aber weiß die Funktion nicht mehr. Hab im Manual nix finden können, nur wie ich die Gültigkeit über Zeit definiere.

    schonmal danke im voraus

  • #2
    Re: Session mit Browser schließen

    Zitat von Calli
    ich möchte die Session mit dem Browser beenden.
    Meinst Du jetzt das Sessioncookie löschen? Was willst Du sonst mit dem
    Browser machen?

    Kommentar


    • #3
      Die Session wird automatisch mit dem schliesen des Browsers beendet ...

      Kommentar


      • #4
        Die Session wird automatisch mit dem schliesen des Browsers beendet ...
        Falsch, eine PHP Session die auf dem Server gespeichert wird nicht! Diese hat immer die Lauftzeit die auf dem jeweiligen Server eingestellt ist -> siehe phpinfo().

        @Calli
        Du kannst das mit einer Zeit definieren, dass bei 5 Min inaktivität die Session gelöscht wird. Dazu muss die Session immer neu mit einem Timestamp gefüttert werden.

        Eine andere Möglichkeit ist ein JavaScript das beim Verlassen/Schließen des Browsers aufgerufen wird in der der PHP-Code zum löschen der Cookievariblen definiert ist!

        Kommentar


        • #5
          Ohne Cookie oder Link mit Name der Session kommt man nach dem Schließen aber nicht mehr dran.

          Kommentar


          • #6
            Siehe Doku session.cookie_lifetime

            Gruß
            phpfan

            Kommentar


            • #7
              Zitat von Zergling
              Ohne Cookie oder Link mit Name der Session kommt man nach dem Schließen aber nicht mehr dran.
              eben und das ist was zählt

              Kommentar


              • #8
                Meinst du Session Timeout ?

                Wenn ja,

                PHP-Code:
                <?php
                function sessiontimeout($sessionvar$timeouttime) {
                    if(
                session_is_registered($sessionvar)) {
                        if(!
                session_is_registered('timeout')) {
                            
                $timeout time();
                            
                session_register('timeout');
                        }else{
                            
                $stime $HTTP_SESSION_VARS['timeout'] + $timeouttime;
                            if( 
                $stime time())
                            {
                                 if(
                session_destroy()) {
                                     
                header("location: error.php?id=timeout");
                                 }
                            }else{
                            
                $HTTP_SESSION_VARS['timeout'] = time();
                            }
                        }
                    }
                }
                ?>
                Funktion kannst du aufrufen mit
                sessiontimeout("user", 100);
                100 sind die sekunden!

                Kommentar


                • #9
                  @chris00
                  Dein Script ist, sorry, Schrott, denn die session*register*-Funktionen sind veraltet und sollten nicht mehr benutzt werden.

                  Gruß
                  phpfan

                  Kommentar


                  • #10
                    Nicht nur das. Auch die Methode, die Session zu löschen ist unzureichend (siehe Manual).

                    Durch das Schließen des Browser(fensters) wird die Sitzung NICHT geschlossen. Auch lässt sich nicht per Server definieren, wann eine Session verfällt (selbst mit einer gc_probability von 100% wird zuerst auf die vermeintlich veraltete Session zugregriffen und dann erst werden die veralteten Sessions (der anderen Benutzer) gelöscht).

                    Als Standard wird ein Cookie zur Übergabe der Session-ID verwendet. Dieses enthält die Info, dass es beim Schließen des Fensters (oder Browsers?) gelöscht werden soll. Aber es gibt ja keine Garantie, dass das auch so implementiert ist. Wird die Session per GET-Parameter übergeben, dann liegt dieser Wert auch nach dem Schließen noch in der History, vielleicht auch in den Bookmarks etc.

                    Um eine Session zu beenden reicht es also nicht, einfach nur das Cookie zu löschen. Oder gar drauf zu hoffen, dass dieses vom Client automatisch gelöscht wird. Solange die Sitzungsdaten serverseitung zugreifbar sind, läuft die Sitzung noch und kann jederzeit wieder aufgegriffen werden, wenn die ID übergeben wird. Das Schließen des Browserfensters garantiert nicht, dass diese ID "verschwindet".

                    Basti

                    Kommentar

                    Lädt...
                    X