Umstellung von SessinID in DB bei Login nötig?

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

  • Umstellung von SessinID in DB bei Login nötig?

    Hallo!

    Hab mir sagen lassen, dass meine Version des Logins ziemlich umständlich und Serverlastig sei. Seltsamerweise find ich hier im Forum aber dennoch ab und an den gleichen Lösungsansatz wie ich ihn habe...

    Ist-Stand:
    Frage BN und Passwort aus DB ab. Wenn richtig speichere ich die SessionID zu dem User in ein Feld dazu und setze ein weiteres Feld auf "online".

    Um nun zu prüfen ob der User eine bestimmte Seite sehen darf, nehm ich seine SessionID und prüf sie mit der ab, die ich in die DB geschrieben hab.
    Wenn er sich ausloggt, wird das Feld mit der SessionID auf der DB gelöscht und auch "online" aus dem entsprechenden Feld gelöscht.

    An sich find ich die Lösung ganz gut, um zu checken wer welche Rechte hat, und wer was sehen darf, aber um anzuzeigen welche User online sind eignet sich diese Version nur bedingt, da bei Browser-Closing nicht automatisch ausgelogged wird.

    Jetzt hab ich über ein Cookie nachgedacht, aber selbst ein Cookie muss doch in die Datenbank was speichern, damit die anderen User sehen wer alles online ist, oder?

    Bin mir jetzt echt unsicher ob ich alles umschreiben soll, oder ob ichs evtl. so lassen kann und nur irgendwie etwas optimieren - ich hab aber keine andere gute idee :-(

    Vielleicht hat ja einer einen Tip für mich, bei dem ich möglichst wenig umstellen muss?

    Danke ;-)

  • #2
    Imho gibt es für die "online"-Anzeige keine wirklich brauchbare Methode.
    Das Problem ist, wie von dir schon erkannt, wenn jemand einfach den Browser schließt und es keinen ordnugsgemäßen Logout gibt.
    Du kannst lediglich die letzte Aktivität der Session überprüfen und wenn sie älter als "x" ist, sie aus der Datenbank löschen und den User auf Offline setzen.


    mfg
    mfg - sagg

    Kommentar


    • #3
      hallo sag wie kann ich das denn überprüfen? kann ich das über die Datenbank machen oder muss ich das über php machen? Wenn die Datenbank das automatisch macht wäre das doch optimal oder?
      Ich denke nämlich das wenn du dies über PHP machst, wäre bei einer großen Anzahl von Nutzern nicht gerade Performance fördern.
      mfg Firedog

      Kommentar


      • #4
        na du speicherst bei jeder aktion den timestamp in der db. den kannst du ohne probs vergleichen.

        siehe auch andere threads zu dem thema. prinzip ist immer das gleiche.

        Kommentar


        • #5
          Aber wird das nicht zu performance lastig? Wenn ich immer eine PHPabfrage machen muss ob der Timestamp noch gültig ist?
          Gibt es da vielleicht ein andere Lösung (Datenbanktrigger)?
          oder habe ich einfach was falsch verstanden?
          mfg Firedog

          Kommentar


          • #6
            okay danke - die idee mit dem timestamp find ich ganz gut. das werd ich wohl so machen. habt ihr erfahrung damit wie oft ihr und wann ihr den timestamp check drüber laufen lasst? kann ja schlecht bei jedem seitenaufruf alle db-felder durchrauschen lassen oder evtl nur bei jedem login? ist das sehr serverlastig?

            Kommentar


            • #7
              Original geschrieben von Firedog
              Aber wird das nicht zu performance lastig? Wenn ich immer eine PHPabfrage machen muss ob der Timestamp noch gültig ist?
              Als ob eine Abfrage mehr oder weniger einen Unterschied machen würde...
              Ich bin jetzt mal über eine Seite gestolpert (nix besonderes, stinknormales Protal) mit über 400 Abfragen pro Seitenaufruf.
              Und die war auch recht schnell aufgebaut.

              Original geschrieben von Firedog
              Gibt es da vielleicht ein andere Lösung (Datenbanktrigger)?
              oder habe ich einfach was falsch verstanden?
              Klar gibt es eine andere Lösung: man lässt den Käse weg.
              mfg - sagg

              Kommentar

              Lädt...
              X