mehrfachlogin gleichzeitig aus verschiedenen pcs verhindern - wie ?

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

  • #16
    Wenn du darauf baust, dass du durch onunload etwas erfährst, wirst du Probleme bekommen. Nicht alle Browser unterstützen diese Funktion und selbst wenn, wird sie ja nur ausgeführt, wenn man die Seite schließt. Was aber, wenn der Benutzer am PC1 einfach zur Mittagspause geht und das Browserfenster offen läßt?
    Nach der Pause geht er dann an PC2 und will sich einloggen. Da am PC1 noch immer sein Browser offen ist, wurde onunload() nicht ausgeführt. Also mußt du trotzdem einen Timeout einbauen.

    Wenn es wirklich firmenintern ist, könntest du dem Benutzer an PC2 eine Meldung anzeigen "Sie können sich z.Z. nicht anmelden, da sie bereits am PC x angemeldet sind. Loggen Sie sich dort aus oder warten sie noch y Minuten, bis sie dort von selbst ausgeloggt werden."

    Kommentar


    • #17
      Hallo!

      Ich habe das Problem in einem Programm wie folgt gelöst:

      Beim einloggen wird die Session-ID in die DB gespeichert. Ausserdem wird ein Feld (z.B. online) auf 1 gesetzt. Dieses zeigt an, ob der User gerade online ist oder nicht.

      Will sich ein zweiter User mit dem selben Login einloggen, dann wird überprüft, ob das Feld online in der DB auf 1 gesetzt ist. Ist das der Fall, bekommt der User eine Nachricht, dass er sich das letzt mal nicht ausgeloggt hat mit einem Link zum korrekten ausloggen.
      Beim klick auf den Link wird die Session-ID aus der DB gelesen und auf dem Server zerstört (spricht die Session-File im tmp-Verzeichnis wird gelöscht).
      Sollte ein zweiter User gerade tatsächlich online sein, so wird er aus dem Programm geschmissen, da keine Session auf dem Server mehr existiert. Sollte er den Browser geschlossen haben, ohne vorher den Logout-Button gedrückt zu haben, passiert einfach nichts. Die Session ist vermutlich nicht mehr auf dem Server vorhanden.

      So kannst du sicherstellen, dass immer nur eine Person und nicht zwei gleichzeitig eingelogged sind.

      Cheerz Mirandus

      P.S.: Natürlich wird beim logout das Feld online noch auf 0 gesetzt.
      Zuletzt geändert von Mirandus; 22.06.2006, 16:47.

      Kommentar


      • #18
        ja aber so kann man dauernd user "killen" bzw dazu missbrauchen..
        ich meine, einfach leute raus kicken..absichtlich..

        ich suche einfach eine moeglichkeit, wenn timeout eintritt - der status in der db geandert wird..

        kann man nicht eine einfache if abfrage erstellen a la if(timeout) {delete from...}

        Kommentar


        • #19
          Hallo!

          ja aber so kann man dauernd user "killen" bzw dazu missbrauchen..
          Der "Missbrauch" passiert aber nur bei Usern, die sich in dem selben Account einloggen (weil z.B drei Leute das Login und PW von Account A kennen). Die reslichen Accounts C, D, E etc. bleiben davon unberührt.

          Cheerz Mirandus

          Kommentar

          Lädt...
          X