Ankündigung

Einklappen
Keine Ankündigung bisher.

session dauert zu lang...

Einklappen

Neue Werbung 2019

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

  • session dauert zu lang...

    mein script hat zu lange sessions, sie hält schon über 3 stunden an
    wie kann ich sagen, das er nach z.b. 1ner stunde die session beendet

  • #2
    http://www.php.net/manual/de/ref.ses...gc-maxlifetime

    Kommentar


    • #3
      dacht ich mirs das das es ist ^^
      aber dazu ne frage, kapiers net so ganz
      1. ist die zahl in sekunden oder minuten anzugeben?
      2. kannst mal nen kleines sinnloses beispielscript machen? z.b.
      PHP-Code:
      <?php
       session_start
      ();
       
      $user="sen-me";
       
      session_register('user');
      ?>

      Kommentar


      • #4
        --> nicht session_register() benutzen...das is veraltet!!!

        benutz $_SESSION['user'] = $user;

        stego87 :wink:

        Kommentar


        • #5
          ist doch egal, zumindest fürn beispiel

          Kommentar


          • #6
            Was an
            Zitat von http://www.php.net/manual/de/ref.session.php#ini.session.gc-maxlifetime
            session.gc_maxlifetime integer

            session.gc_maxlifetime spezifiziert die Anzahl der Sekunden, nach denen Daten als 'garbage' ('Müll') betrachtet und entsorgt werden.
            läßt Zweifel daran aufkommen, ob die Angabe in Sekunden oder Minuten ist?

            Kommentar


            • #7
              ich hab irgendwo gelesen das es als minuten zu beachten gild

              und wie stellt man nun das ein?
              PHP-Code:
              session_start();
              session.gc_maxlifetime 3600
              oda wie?

              Kommentar


              • #8
                Online-Handbuch benutzen
                http://www.php.net/manual/de/configuration.php

                Kommentar


                • #9
                  PHP-Code:
                  <?php
                   ini_set
                  ("session.gc_maxlifetime",10);
                   
                  session_start();
                   echo 
                  ini_get("session.gc_maxlifetime");
                   if(
                  $_POST['name']!=""$_SESSION['name']=$_POST['name'];
                   echo 
                  "Name = ".$_SESSION['name'];
                  ?>
                  nach 10 sekunden ist die session immer noch da

                  Kommentar


                  • #10
                    nach 10 sekunden ist die session immer noch da
                    Das äußert sich genau wie?

                    Kommentar


                    • #11
                      das script daoben, die session hält immernoch über 10 sekunden an, sogar über 10 minuten

                      Kommentar


                      • #12
                        Mach doch einfach mal eine Seite mit de, folgenden Inhalt:
                        PHP-Code:
                        <?php
                        Error_reporting
                        (E_ALL);
                        Session_start();

                        if(isset(
                        $_SESSION['user']))
                        {
                        echo 
                        "Die Session existiert noch!";
                        }
                        else
                        {
                        echo 
                        "Die Session existiert [b]nicht[/B] mehr";
                        }
                        ?>
                        Die Datei musst du dann aufrufen, nachdem du die andere Datei, in der die Session angelegt wurde ausgeführt hast.

                        Kommentar


                        • #13
                          wenn ich init_set() weg lasse, ist es automatisch wieder bei 1440
                          du meins so
                          deklare.php
                          PHP-Code:
                          <?php
                           error_reporting
                          (E_ALL);
                           
                          init_set("session.gc_maxlifetime",1);
                           
                          session_start();
                           
                          $_SESSION['user']="sen-me";
                          ?>
                          output.php
                          PHP-Code:
                          <?php
                           error_reporting
                          (E_ALL);
                           
                          session_start();

                           if(isset(
                          $_SESSION['user'])) echo "Die Session existiert noch!";
                           else echo 
                          "Die Session existiert [b]nicht[/b] mehr";
                          ?>
                          ?
                          geht immer noch nich (zeigt immer an, das sie noch existiert)

                          Kommentar


                          • #14
                            Ah, wieder was gelernt.
                            session.gc_maxlifetime, das bezieht sich nur auf die Garbage Colection.
                            Wenn die läuft (gesteuert durch session.gc_probability, session.gc_divisor), dann werden Daten, die länger als maxlifetime Sekunden nicht benutzt wurden, entfernt.
                            Das eigentliche Laden der Sessiondaten scheint nach dem Prinzip: "Wenn die Daten noch vorhanden sind, dann sind sie auch gültig" zu laufen.
                            Eine verlässliche/unausweichliche Begrenzung scheint es also in php eingebaut nicht zu geben.
                            Aber Du kannst die Laufzeit in der Session abspeichern und nach session_start() jeweils abprüfen. Wenn die zeit abgelaufen ist, einfach alle Daten löschen und session_destroy() aufrufen.
                            PHP-Code:
                            <?php
                            session_start
                            ();
                            if (!isset(
                            $_SESSION['maxtime'])) {
                                
                            // neue Session
                                
                            $_SESSION['maxtime'] = time() + 10;
                            }
                            else {
                                if (
                            $_SESSION['maxtime'] > time()) {
                                    
                            // alles löschen, aus und vorbei
                                
                            }
                            }
                            ?>
                            Der Cookie beim Client ist eigentlich egal. Aber versuchen ihn zu löschen, kannst Du ja trotzdem.
                            Beispiel gibt es bei http://php.speedbone.de/manual/en/fu...on-destroy.php

                            Kommentar


                            • #15
                              eher < time() ^^, sonst würde er ja immer die session löschen

                              Kommentar

                              Lädt...
                              X