Seite 1 von 2

Prüfen, ob Account mehrfach genutzt wird

Verfasst: 07.06.2012 11:05
von dieter99
Hallo,
in meinem Forum darf ein- und derselbe Account nicht mehrfach genutzt werden (von verschiedenen Personen). Ich bin nun auf der Suche nach einen MOD, der loggt ob 2 User mit dem gleichen Account gleichzeitig online sind.

Gibt es sowas?

Re: Prüfen, ob Account mehrfach genutzt wird

Verfasst: 07.06.2012 11:35
von cpg
Moin,

es gibt einen "Double Account Preventer": http://www.phpbb.com/community/viewtopi ... &t=1472765

Nachtrag:
Ich sehe gerade, dass der Download-Link dort in dem Fred rausgenommen wurde. Vielleicht bekommst Du aber in den Beiträgen hinweise, die nützlich sind (?)

Gruß
CPG

Re: Prüfen, ob Account mehrfach genutzt wird

Verfasst: 07.06.2012 12:45
von BNa
Die genannte Mod prüft ob der gleiche IP Adressraum für mehrere Accounts benutzt wird. Was der OP meint ist, ob ein und derselbe Account von mehreren benutzt wird. Das kann man zum Beispiel mit diesem Snippet unterbinden. Hierbei wird der Erst Eingeloggte automatisch ausgeloggt, sofern ein Weiterer sich mit dem selben Account einloggt. Das allerdings ohne Monitoring, weil es einfach funktioniert.

Re: Prüfen, ob Account mehrfach genutzt wird

Verfasst: 08.06.2012 14:33
von Miriam
Soweit ich es erkennen kann, wird bei Benutzung dieses Snippets weder der erste User, noch (irgend-) ein anderer User, der diesen Account benutzt, ausgeloggt, wenn er / sie /es die Option "Mich bei jedem Besuch automatisch anmelden" benutzt. Also ein Cookie zur Anmeldung benutzt wird; was auch die Regel sein dürfte.
Nach meiner Erkenntnis muß dann auch noch der Key aus der Session-Keys-Tabelle entfernt werden. (So wird es ja auch in der function session_kill() in der includes/session.php gemacht.)

Re: Prüfen, ob Account mehrfach genutzt wird

Verfasst: 08.06.2012 14:54
von BNa
Die Funktion habe ich nie benutzt. Daher waren alle Test erfolgreich. Schon mal selbst live getestet?

Dann würde also ein zusätzliches Codefragment nach dem Bekannten reichen

Originalcode

Code: Alles auswählen

$sql = 'DELETE FROM ' . SESSIONS_TABLE . "
        WHERE session_user_id  = " . (int) $row_user_id . "
        AND session_id        != '$row_session_id'        
        AND session_start     != '$row_session_start'";
$db->sql_query($sql);
Danach einzufügen

Code: Alles auswählen

$sql = 'DELETE FROM ' . SESSIONS_KEYS_TABLE . '
        WHERE user_id = ' . (int) $row_user_id;
$db->sql_query($sql);

Re: Prüfen, ob Account mehrfach genutzt wird

Verfasst: 08.06.2012 15:00
von Miriam
Ja.
Warum meinst Du wohl brauche ich immer so lange, um Lösungen zu "Problemen" zu posten? Ich probiere sie in vor dem Posten in 99,99% der Fälle aus. :lol:

Re: Prüfen, ob Account mehrfach genutzt wird

Verfasst: 08.06.2012 15:01
von BNa
Jup, teste auch immer alles aus vorher, dh. alle Snippets sind getestet (gut, bis auf das ich die genannte Funktion nie benutze).

Grad ein Edit rein, f5 + nochmal lesen

Edit: Ich glaub, ich weiss jetzt, was zu tun ist.

Re: Prüfen, ob Account mehrfach genutzt wird

Verfasst: 08.06.2012 15:11
von Miriam
Immer diese Edits *tsts*

Mit

Code: Alles auswählen

$sql = 'DELETE FROM ' . SESSIONS_KEYS_TABLE . '
            WHERE user_id = ' . (int) $row_user_id;
    $db->sql_query($sql); 
loggst Du ja alle aus.

Wie sieht's mit

Code: Alles auswählen

$sql = 'DELETE FROM ' . SESSIONS_KEYS_TABLE . '
        WHERE user_id = ' . (int) $row_user_id . "
        AND last_ip <> '" . $user->data['session_ip']. "'";
        $db->sql_query($sql); 

aus?
^^ Das ist jetzt allerdings ungetestet.

Re: Prüfen, ob Account mehrfach genutzt wird

Verfasst: 08.06.2012 15:15
von BNa
So können aber zwei Personen aus dem gleichen Netzwerk dennoch gleichzeitig als ein und derselbe User rein. Bin grad schon an der Lösung dran.

Edit: Wie funktioniert denn diese Funktion eigentlich? > "Mich bei jedem Besuch automatisch anmelden"
Ich hake das an und nach dem logout und nächstem login ist der Haken wieder weg und ich muss das Passwort wieder eingeben.
Aber egal erstmal..

Also, wenn ich das in zwei Browsern teste. So ist das Original Snippet gedacht:

- Der erste loggt sich ein mit Firefox
- Der zweite loggt sich ein mit Opera

Beide selber User Account.

Aktualisiere ich jetzt irgendeine Seite oder klicke irgendwo hin im Firefox,
ist der Firefox User ausgeloggt und der Opera User ist nach wie vor drin.

Et voila, so soll es sein. Also funktionierts ja doch, oder?

Egal, ich hab Deine Erweiterung erstmal hier rein. Für die meisten Zwecke reicht es ja aus (Verschiedene IPs > gleicher User Account). Das ist wohl das, was die meisten verhindern möchten. Ich bastel dann später an einer narrensicheren(!) Variante weiter.

Re: Prüfen, ob Account mehrfach genutzt wird

Verfasst: 08.06.2012 17:34
von Miriam
So können aber zwei Personen aus dem gleichen Netzwerk dennoch gleichzeitig als ein und derselbe User rein. Bin grad schon an der Lösung dran.
Derselbe können sie ja nicht sein... haben mindestens verschiedene IPs.
Aber gut: Wenn sie über einen Proxy kommen, haben sie gleiche IPs (abgesehen von der X-FORWARDED-FOR Geschichte).
Edit: Wie funktioniert denn diese Funktion eigentlich? > "Mich bei jedem Besuch automatisch anmelden"
Ich hake das an und nach dem logout und nächstem login ist der Haken wieder weg und ich muss das Passwort wieder eingeben.
Aber egal erstmal..
Die Annahme von Cookies muß akzeptiert werden.
Es wird mit dem Anhaken ein Cookie gesetzt, der session_key wird in einem Cookie gepeichert. Wenn Du Dich nicht aktiv ausloggst, bist Du bei Kenntnis des Session-Keys drin.
Lies hier: KB:cookie_daten.
Also, wenn ich das in zwei Browsern teste. So ist das Original Snippet gedacht:

- Der erste loggt sich ein mit Firefox
- Der zweite loggt sich ein mit Opera
Und beide haben Autologin an... was nun?
Aktualisiere ich jetzt irgendeine Seite oder klicke irgendwo hin im Firefox,
ist der Firefox User ausgeloggt und der Opera User ist nach wie vor drin.
Dann hast Du kein Autologin an.
Et voila, so soll es sein. Also funktionierts ja doch, oder?
Wir (also Du :lol: )wollen doch aber alle Möglichkeiten abdecken und nicht nur Einzelschicksale.
Egal, ich hab Deine Erweiterung erstmal hier rein. Für die meisten Zwecke reicht es ja aus (Verschiedene IPs > gleicher User Account). Das ist wohl das, was die meisten verhindern möchten. Ich bastel dann später an einer narrensicheren(!) Variante weiter.
Viel Glück.

Wie dem auch sei: Die Session-ID allein zu löschen, loggt den User noch nicht aus, jedenfalls nicht immer.
Hast Du Dir auch mal session_kill() angeschaut? Eigentlich brauchst Du da nur noch etwas dran schrauben und Du hast es gelöst. (Denke ich zumindest.)