session problem

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

  • session problem

    Hallo zusammen !

    Ich habe ein Problem mit sessions.
    Wenn ein Benutzer länger als ca.30 Minuten inaktiv war, dann gehen die Daten in der Session verloren.

    Beispiel :
    Ein benutzer steht auf einer Seite und macht 30 min nichts.
    Dann klickt er einen Button und wird zu der gewünschten Seite weitergeleitet.
    Über die URL gebe ich die sessionid mit.
    Der User ist jetzt auf der neuen Seite, in der URL ist die gleiche session id wie vorher, die session-daten allerdings sind weg.

    im script setze ich folgende werte :

    PHP-Code:
    ini_set('session.gc_maxlifetime',36000); 
    jemand ne Idee woran das liegen kann ?

    mfg
    jogi



    p.s

    PHP-Code:
    session
    Session Support  enabled  
    Registered save handlers  files user  

    Directive Local Value Master Value 
    session
    .auto_start Off Off 
    session
    .bug_compat_42 On On 
    session
    .bug_compat_warn On On 
    session
    .cache_expire 180 180 
    session
    .cache_limiter nocache nocache 
    session
    .cookie_domain no value no value 
    session
    .cookie_lifetime 0 0 
    session
    .cookie_path / / 
    session.cookie_secure Off Off 
    session
    .entropy_file no value no value 
    session
    .entropy_length 0 0 
    session
    .gc_divisor 100 100 
    session
    .gc_maxlifetime 1440 1440 
    session
    .gc_probability 1 1 
    session
    .name PHPSESSID PHPSESSID 
    session
    .referer_check no value no value 
    session
    .save_handler files files 
    session
    .save_path /tmp /tmp 
    session
    .serialize_handler php php 
    session
    .use_cookies On On 
    session
    .use_only_cookies Off Off 
    session
    .use_trans_sid Off Off 
    Zuletzt geändert von jogisarge; 25.10.2005, 10:34.

  • #2
    Re: session problem

    Original geschrieben von jogisarge
    im script setze ich folgende werte :
    ini_set('session.gc_maxlifetime',36000);
    Sieht aber in deinem P.S. nicht wirklich so aus, als ob er diese Änderung angenommen hätte, oder?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      der Auszug von phpinfo(); habe ich separat in einer kleinen php datei gemacht.

      Wenn ich mir den Wert mit ini_get(...) hole, dann steht 36000 drin.

      Kommentar


      • #4
        ini_set('session.gc_maxlifetime',36000);

        Schreibst du das auch vor JEDES session_start() ??

        Gruss

        tobi
        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


        • #5
          Original geschrieben von jogisarge
          Wenn ich mir den Wert mit ini_get(...) hole, dann steht 36000 drin.
          Ist nur fraglich, ob der Wert an dieser Stelle überhaupt etwas bewirkt.
          Du setzt diesen Wert nur für die Session in deinem Script - der Garbage Collector ist aber von deinem Script unabhängig, er bekommt überhaupt nicht mit, dass du in irgendeinem Script ini_set benutzt.

          Wenn das wirklich etwas bewirken sollte, müsstest du den Wert m.E. schon global setzen (lassen), also in der php.ini
          Evtl. geht es auch schon, wenn er per .htaccess für das Verzeichnis gesetzt wird.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            nein habe ich nicht.
            Ich habe es jetzt korrigiert.
            ?? Kann das da Problem gewesen sein ??

            Ich habe mal irgendwo gelesen, dass man das auch über eine php.ini datei im Verzeichnis der php-programme steuern kann, da ich keinen Zugriff auf die php.ini des Servers habe.
            Geht sowas ?

            mfg
            Jogi

            Kommentar


            • #7
              Du musst deine ini_set() vor jedem session_start() machen. Falls nicht dann holt die Fkt den Wert aus der php.ini und dieser ist ja eben zu kurz. Wenn du aber vor jedem start die ini_set() schreibst, dann sollte die korrekte Gültigkeitsdauer verwendet werden.
              ini_set() kann nur zur Laufzeit eines Scriptes etwas ändern. Wenn das Script abgeschlossen ist und kein erneutes ini_set() kommt, dann wird eben der ini Wert genommen.

              Gruss

              tobi
              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


              • #8
                Hallo nochmal !

                danke für die Antworten.
                Ich habe die session laufzeit jetzt erfolgreich hochgesetzt.

                Jetzt habe ich ller dings ein neues Problem.

                wenn ich auf einer seite bei mir stehe, und die seite in den Favoriten abspeichere, dann wird die session id mitabegespeichert, da diese in der URL ist.

                Wenn ich jetzt alle Browser schliesse, und meine Seite aus den Favoriten aufrufe, dann wird die alte session wieder geladen, und die Daten stehen zur Verfügung.

                Wie kann ich das verhindern.

                Wird die session nicht zerstört, wenn der Browser geschlossen wird ?

                mfg
                jogi

                Kommentar


                • #9
                  OffTopic:
                  Langsam wird's aber albern. Wer so wenig Ahnung hat, sollte sich vielleicht erst mal ein bisschen mehr aneignen, bevor er Sessions benutzt!

                  Wird die session nicht zerstört, wenn der Browser geschlossen wird ?
                  Nein, warum sollte sie?
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Eine Session kann nur der Server zerstören. Und wenn du den Client schliesst, dann kriegt das der Server doch gar nicht mit. Also wie sollte er die Session zerstören. Nach Ablauf der Session Zeit definiert durch php.ini oder ini_set() wird die Session jedoch ungültig sein.
                    Die Session wird nur zerstört wenn das mittels unset() oder session_destroy() machst.

                    Gruss

                    tobi
                    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


                    • #11
                      Wenn ich mich nicht arg irre, wird die Session auch dann zerstört, wenn ein Client mit selbiger IP einen neuen session_start() veranlasst, jedoch ohne eine gültige sessionID an den Server zu schicken (Sei es durch Cookies, oder per request).
                      Diese These ist aber nur eine wage Vermutung meinerseits, die auf gesammelten Erfahrungen beruht und mir noch von niemandem bestätigt worden ist.

                      Ja ich weiß, dieser Thread war wahrlich keine Hilfe


                      Grüße fackelkind
                      54 68 65 72 65 20 61 72 65 20 6F 6E 6C 79 20 31 30 20 74 79 70 65 73 20 6F 66 20 70 65 6F 70 6C 65 20 69 6E 20 74 68 65 20 77 6F 72 6C 64 3A A 54 68 6F 73 65 20 77 68 6F 20 75 6E 64 65 72 73 74 61 6E 64 20 62 69 6E 61 72 79 2C 20 61 6E 64 20 74 68 6F 73 65 20 77 68 6F 20 64 6F 6E 27 74

                      Kommentar


                      • #12
                        ...wird die Session auch dann zerstört, wenn ein Client mit selbiger IP einen neuen session_start() veranlasst...
                        Es wird wohl eine neue Session gestartet, aber die alte wird nicht gelöscht. Wenn du ohne Cookie oder ID im URL daherkommst, woher sollte der Server wissen welche Session du vorher hattest? Und wenn er einfach die Session löschen würde, die von einer gleichen IP kommt, dann hättest du wohl Probs mit Usern, die von hinter einem Proxy herkommen.
                        Probiers mal aus: Gehe auf die Seite und lass ne Session starten. Speichere den Wert, geht wieder raus und rufe die Seite nochmals auf (ohne Cookie oder ID im URL). Dann wieder raus und mit der alten Session wieder rein --> die alte Session sollte wiedererkannt werden.

                        Gruss

                        tobi
                        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


                        • #13
                          Klingt schlüssig und nachvollziehbar.
                          Ich hätte wohl lieber googlen sollen, anstelle eine solch schwachsinnige Vermutung daherzuposten

                          Danke für die Erleuchtung
                          54 68 65 72 65 20 61 72 65 20 6F 6E 6C 79 20 31 30 20 74 79 70 65 73 20 6F 66 20 70 65 6F 70 6C 65 20 69 6E 20 74 68 65 20 77 6F 72 6C 64 3A A 54 68 6F 73 65 20 77 68 6F 20 75 6E 64 65 72 73 74 61 6E 64 20 62 69 6E 61 72 79 2C 20 61 6E 64 20 74 68 6F 73 65 20 77 68 6F 20 64 6F 6E 27 74

                          Kommentar

                          Lädt...
                          X