Ankündigung

Einklappen
Keine Ankündigung bisher.

Kurze Frage zur Session

Einklappen

Neue Werbung 2019

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

  • Kurze Frage zur Session

    Hallo zusammen,

    wen ich mit die Lifetime meiner Session auf sagen wir mal auf 5 Minuten setze dann haucht das Cookie auch nach 5 Minuten pünktlich sein virtuelles Leben aus.

    Jetzt möchte ich aber die Lebensspanne der Session jedesmal wen der Benutzer eine Aktion durchführt wieder auf 5 Minuten verlängern.

    Wird mit session_start(); der Timer jedesmal erneuert? Ich hab mittels session_set_cookie_params('300') meinem Cookie die Knarre auf die Brust gesetzt, nur ist es leider so das egal ob ich etwas mache oder nicht das Ding ist nach 5 Minuten platt.

    Eine Möglichkeite die mir einfällt wäre, innerhalb der Session die Zeit zu speichern wann das Cookie erstellt wurde und dann die Session zu beenden, sollte der Timer beim erneuten Aufruf abgelaufen sein oder bei einem Aufruf innerhalb der Zeit mit session_regenerate_id eine neue zu setzen - weis ja nidmal ob des so geht aber es wäre ne Möglichkeit. Gibt aber bestimmt noch bessere Wege dafür oder?

    Danke schonmal für nen Tipp.


  • #2
    Moin,

    ich denke die einfachste Möglichkeit wäre, eine Session Variable... sagen wir
    $_SESSION['time'] zu setzen und diese bei jedem Seitenaufruf mit dem aktuellen Zeitstempel zu aktualisieren.
    Sollte jedoch time < time() - 300 sein, dann machste [MAN]session_unset[/MAN] , [MAN]session_destroy[/MAN].

    cu
    Grüße
    Destruction
    "Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]

    Kommentar


    • #3
      ok aber aktuell hab ich das problem das halt eben selbst wen ich den timer auf 10 sek einstelle und ich zbs. permanent aktualisiere nach 10 sekunden feierabend ist.

      an die von dir genannte variante hab ich auch schon gedacht - allerdings müßte ich dann den timer vom cookie zbs. auf einen tag setzen und halt immer prüfen ob der user in dem timer interval eine aktion ausgeführt hat - wen nicht dann session_destroy(); dachte halt es gibt ne möglichkeit die lebensdauer direkt zu erneuern - fände ich persönlich schöner.

      trotzdem danke für deine antwort

      Kommentar


      • #4
        wen ich mit die Lifetime meiner Session auf sagen wir mal auf 5 Minuten setze dann haucht das Cookie auch nach 5 Minuten pünktlich sein virtuelles Leben aus.
        kann eigentlich nicht sein. Setzt Du den Cookie denn von Hand ?

        session_use_cookies und ggf. session_use_only_cookies reicht.


        Wird mit session_start(); der Timer jedesmal erneuert?
        ja

        PHP: session_start - Manual

        session_start() erzeugt eine Session oder nimmt die aktuelle wieder auf
        Eine if-else-Abfrage nimmt, ordentlich geschrieben eine Menge Platz weg. Platzsparend geht es mit einem ternären Operator.

        Kommentar


        • #5
          Das ist nicht ganz so einfach, session_start() sollte immer am Anfang vom Script ausgeführt werden und im weiteren Code nicht mehr, kurz nochmal nachgelsen auf php.net und das ganze bestätigt:
          Ab PHP 4.3.3 resultiert der Aufruf von session_start() nachdem die Session vorher gestartet wurde in einem Fehler der Stufe E_NOTICE. Der zweite Start der Session wird in diesem Fall einfach ignoriert.
          Was du allerdings nutzen könnten müsstest: PHP: session_regenerate_id - Manual

          OT:
          http://www.php.de/php-einsteiger/464...verwenden.html
          "My software never has bugs, it just develops random features."
          "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

          Kommentar

          Lädt...
          X