FeGm: Login-Script: Login läuft nach 5 min nichts tun ab

Hallo zusammen!
(PHP und MySQL)

Ich baue gerade an meinem Login System was ich komplett selber geschrieben habe.

Nun fehlt mir jedoch noch die Funktion, das die aktuelle Session nciht mehr gültig ist wenn man z.B. 5 Minuten auf keiner Seite war.

Momentan prüfe cih bevor ich eine Seite anzeige nur, ob Session id, Name und IP mit der in der MySQL Datenbank übereinstimmen.

ich würde jetzt gerne noch mein Login System sicherer machen.

Ich habe in anderen Login System schon gesehen das die Zeit der letzten Aktivität in der DB gespeicherrt wird, habe es abde rnoch nciht geschafft zu errechen ob die Zeit älter als z.B. 5 minuten ist...

Hat jemand eine Idee wie ich das am besten mache und in welchem Format ich Datum/Uhrzeit in der DB speichern soll?

Vielen Dank,
FeGm

  1. Hi FeGm,

    Ich habe in anderen Login System schon gesehen das die Zeit der letzten Aktivität in der DB gespeicherrt wird, habe es abde rnoch nciht geschafft zu errechen ob die Zeit älter als z.B. 5 minuten ist...

    Ich würde es nicht so umständlich machen. Was hälst du von session.gc_maxlifetime?

    ciao
    romy

    1. hi,

      Was hälst du von session.gc_maxlifetime?

      In diesem Falle: Nicht viel.

      Diese Max-Lifetime wird ihrem Namen nicht gerecht, sie ist eher eine Min-Lifetime.
      Wenn sie abgelaufen ist, _dürfen_ die Daten vom Garbage Collector entsorgt werden. Dessen Ausführung ist allerdings zufallsgesteuert (session.gc_probability und session.gc_divisor spielen da noch mit rein) - eine "Garantie", dass die Daten nach X Sekunden entsorgt werden, stellt diese Einstellung aber nicht dar.

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
    2. Hello,

      Ich würde es nicht so umständlich machen. Was hälst du von session.gc_maxlifetime?

      Da fuhrwerkst Du aber in der falschen Schicht herum!

      GC_MaxLifetime ist ein Peripherie-Parameter, der von der Applikation tunlichst _nicht_ für eigene Zwecke benutzt werden sollte. Er muss nur passend zur Applikation, sozusagen als Schutzhülle, eingestellt werden. Desweiteren siehe https://forum.selfhtml.org/?t=144896&m=940125

      Harzliche Grüße vom Berg
      http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau

  2. Nun, du bastelst einfach eine Spalte mehr in deine Tabelle die entweder "gültig bis" oder "gespeichert um" enthält.

    Da du wahrscheinlich ohnehin bei jedem Klick die Login-Berechtigung prüfst kannst du auch gleich bei vorhandener Berechtigung die Uhrzeit der Zeile aktualisieren.

    Aus Performence-Gründen kannst du das auch nur machen wenn die Session eh in zwei oder weniger Minuten abläuft, das spart ein paar Queries. Du kannst das aber auch bei jedem Klick machen.

  3. ABer wie vergleiche ich die gespeicherte Zeit mit der jetztigen Zeit so das ich weiss ob die Zeit abgelaufen?

    1. hi,

      ABer wie vergleiche ich die gespeicherte Zeit mit der jetztigen Zeit so das ich weiss ob die Zeit abgelaufen?

      Mit einem geeigneten Vergleichsoperator ...?

      Möchtest du deine Frage vielleicht etwas präsizieren?
      [ ] Ich weiss nicht, was für Vergleichsoperatoren es gibt
      [ ] Ich weiss nicht, welche(r) Vergleichsoperator(en) sinnvoll wäre/sind
      [ ] Ich weiss nicht, wie ich die aktuelle Zeit in PHP ermittle
      [ ] Ich weiss nicht, wie ich die aktuelle Zeit in MySQL ermittle

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }