Matt: Mehrfachlogin realisieren

Cheers,

gibt es eine Möglichkeit einen Mehrfachlogin (PHP & MySQL) eines Users logisch zu verhindern?
Das Problem ist, dass sich User nicht unbedingt ausloggen.
Sprich, setze ich beim User ein Datenbankfeld auf Online und dieser sich nicht ausloggt sondern das Browserfenster schließt, ist er in der Datenbank noch online. Will er sich derselbe Benutzer erneut anmelden, schlägt dies natürlich fehl und er würde eine Melden bringen dass er bereits angemeldet sei.

Onunload u.Ä. ist keine passable Lösung.

Wie handhabt ihr das? Per Cronjob alle 5 Minuten checken ob noch Aktivität vorliegt, wenn 5 Minuten inaktiv, dann nicht mehr eingeloggt?

Herzlich Dank für eure Hilfe.
Matt

  1. Gudn!

    Onunload u.Ä. ist keine passable Lösung.

    in der Tat!

    Wie handhabt ihr das? Per Cronjob alle 5 Minuten checken ob noch Aktivität vorliegt, wenn 5 Minuten inaktiv, dann nicht mehr eingeloggt?

    Solange sich ein User bei mir auf solchen Seiten mit Login bewegt wird bei jedem Aufruf die aktuelle Zeit in die Datenbank geschrieben. Aus dieser Eintragung ergibt sich mit entsprechender Zeitdifferenz in etwa die Zahl der User, die online sind.

    Bei aktivem Logout setze ich noch eine 1 in eine entsprechende Spalte und Session/Cookie werden vernichtet.

    Gruß, Samoht

    --
    fl:| br:> va:) ls:< n4:( ss:) de:] js:| mo:}
    "Computer games don't affect kids; I mean if Pac-Man affected us as kids, we'd all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music."
    (Kristian Wilson, Nintendo, 1989)
    1. Ich hoffe das hilft,

      http://forum.chip.de/php-mysql-etc/onlinestatus-erkennen-php-sessions-785476.html

      Grüße

  2. Hello,

    der Ansatz ist falsch.
    Bei HTTP gibt es kein reales "Login".
    HTTP arbeitet per Definition verbidungs- und zustandslos. Das bedeutet, dass man nur ein "virtuelles Login" aufbauen kann über einen Wiedererkennungsmechanismus und ein Zeitfenster für die Requests.

    Liegen zwei aufeinanderfolgende Requests nicht mehr innerhalb dieses Zeitfensters, dann muss das System entsprechend reagieren. Im einfachsten Falle gilt der User dann als "abgemeldet". Er muss ich also neu authentifizieren.

    Ob man die alte Vorgangsserie dann fortsetzt, oder eine neue beginnt, hängt von der Implementation ab.

    Wenn sich der User also bewusst doppelt "anmeldet", dann könnte das System ihm seine zuletzt aktuellen Vorgangs-Daten vorlegen mit der Frage, ob die zweite (ältere) Session fortgesetzt werden soll, oder diese neue aktuell werden soll. Die alte Vorgangsserie müsste dann sicherlich gezielt geschlossen, rückabgewickelt/gelsöscht oder weiterhin auf Eis gelegt werden.

    Verwechsele also nicht Session, Authentifikatioen und Vorgangsbearbeitung.

    Ich hatte neulich einen Vorschlag zur Diskussion gestellt bezüglich der Überprüfungsfunktionen uhd Datenbankstatements für "Login"...

    http://forum.de.selfhtml.org/archiv/2008/4/t170126/#m1111727

    Ein harzliches Glückauf

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Salut!

      HTTP arbeitet per Definition verbidungs- und zustandslos.

      Magst du das erste bitte streichen?

      Ich meine nicht das fehlende 'n' - HTTP ist 'stateless' (zustandslos)
      RFC 2616

      HTTP ist vom darunterliegenden Transportprotokoll unabhängig - hier wäre der Begriff 'Verbindung' angebracht.

      au relire

      Sven aus M.

      1. Hello,

        HTTP ist vom darunterliegenden Transportprotokoll unabhängig - hier wäre der Begriff 'Verbindung' angebracht.

        Das bedeutet also, dass Du HTTP auch verbindungsorientiert einsetzen kannst?

        Ein harzliches Glückauf

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. Salut!

          Das bedeutet also, dass Du HTTP auch verbindungsorientiert einsetzen kannst?

          Welchen Zusammhang hat dieser Satz zu meiner Aussage:

          HTTP ist vom darunterliegenden Transportprotokoll unabhängig - hier wäre der Begriff 'Verbindung' angebracht.

          ?

          Ich habe mir lediglich erlaubt dich bzgl. deines benutzten Fachvokabulars zu korrigieren.

          Kurz: connection (oriented || less) hat nix mit dem _Anwendungsprotokoll_ HTTP (Ich freue mich schon auf Deinen Kommentar hierzu) zu tun.

          Dieser Begriff (connection / Verbindung) passt auf Protokolle der Transportschicht (ISO/OSI-Referenzmodell: Layer 4 oder ~ TCP/IP- Modell: Layer 3 hier meist host-to-host genannt)

          Btw: HTTP ist auch unabhängig von TCP/IP konzipiert, obwohl es i.d.R. der TCP/IP-Protokoll-Suite zugeordnet wird).

          Warum kannst Du nicht nicht einfach sagen: ok ich habe mich geirrt?
          Das habe ich in diesem Forum auch mehrfach getan - ist nichts Verwerfliches daran zu finden.

          au relire

          Sven aus M.

          1. Hello,

            Warum kannst Du nicht nicht einfach sagen: ok ich habe mich geirrt?

            ...weil ich bisher nicht nachvollziehen kann, durch welchen Zustand im HTTP-Protokoll eine gültige Verbindung signiert wird. Ich kann doe Stelle nicht finden.

            Nach meinem Verständnis gibt es auf einen Request eine Weile nichts und dann vielleicht einen Response, bestehend aus einem response-Header (mit Statuswert) und eventuell einem Response-Body (Datenansammlung).

            Wer löst einen Timeout aus, wenn keine Antwort kommt? Ist es der Client, oder ist es der Server?

            Kann der Server dem Client über eine Verbindung ungefragt Nachrichten schicken?

            Ich bezweifele ja nicht, dass ich durch bisherige Darstellungen und immerwährende Wiederholungen in Fachforen irritiert sein könnte...

            Das geht ja bestimmt allen Leuten genauso, die vor über sieben Jahren meine Ideen zu Hintergundaktivitäten mittels JavaScript gemeint haben, dass das niemals möglich wöre, weil ...

            Heute nennt sich das AJAX.

            Ein harzliches Glückauf

            Tom vom Berg

            --
            Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de
            1. Salut!

              ...weil ich bisher nicht nachvollziehen kann, durch welchen Zustand im HTTP-Protokoll eine gültige Verbindung signiert wird. Ich kann doe Stelle nicht finden.

              Wo habe  ich das behauptet?
              HTTP ist vom Transport unabhängig, dieser kann verbindungslos oder -orientiert sein.

              Nach meinem Verständnis gibt es auf einen Request eine Weile nichts und dann vielleicht einen Response, bestehend aus einem response-Header (mit Statuswert) und eventuell einem Response-Body (Datenansammlung).

              Was hat dieser Gemeinplatz mit unserer Diskussion zu tun?

              Wer löst einen Timeout aus, wenn keine Antwort kommt? Ist es der Client, oder ist es der Server?

              Das ist mir zu allgemein - welche Schicht im Protokoll-Stack?
              außerdem: was hat das mit unserer Diskussion zu tun?

              Kann der Server dem Client über eine Verbindung ungefragt Nachrichten schicken?

              s.o. - welcher Server - wo bist Du?

              Ich bezweifele ja nicht, dass ich durch bisherige Darstellungen und immerwährende Wiederholungen in Fachforen irritiert sein könnte...

              Ich schon!

              Das geht ja bestimmt allen Leuten genauso, die vor über sieben Jahren meine Ideen zu Hintergundaktivitäten mittels JavaScript gemeint haben, dass das niemals möglich wöre, weil ...

              Heute nennt sich das AJAX.

              Danke Tom - danke dafür, dass die UA-Produzenten aufgrund deiner Visionen uns heute xml_http_request zur Verfügung stellen.

              Ich werde jetzt Fußball schauen  - bis morgen!

              au relire

              Sven aus M.

              1. Hello,

                Ich werde jetzt Fußball schauen  - bis morgen!

                Das wird auch besser sein :-)

                Ein harzliches Glückauf

                Tom vom Berg

                --
                Nur selber lernen macht schlau
                http://bergpost.annerschbarrich.de
                1. Salut!

                  Halbzeitpause!

                  Ich werde jetzt Fußball schauen  - bis morgen!
                  Das wird auch besser sein :-)

                  Genau - dann bleibt dir bis morgen (Abend - ich arbeite tagsüber) genug Zeit, um nochmals zu lesen, was ich geschrieben habe und es zu verstehen ;)

                  au relire

                  Sven aus M.