PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks. |
 |
|

22-06-2006, 11:11
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
|
|
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."
|

22-06-2006, 17:40
|
Mirandus
Newbie
|
|
Registriert seit: Jan 2006
Beiträge: 12
|
|
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.
Geändert von Mirandus (22-06-2006 um 17:47 Uhr)
|

23-06-2006, 02:22
|
frank the tank
Newbie
|
|
Registriert seit: Nov 2003
Beiträge: 22
|
|
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...}
|

23-06-2006, 10:36
|
Mirandus
Newbie
|
|
Registriert seit: Jan 2006
Beiträge: 12
|
|
Hallo!
Zitat:
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
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Thema bewerten |
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
Aktuelle PHP Scripte
Top-Side.de Php News Script
Newsscript mit Smilies, BB-Code, Löschfunktion, Editierfunktion, Kommentarfunktion, Seiten- bzw. Blätterfunktion
14.04.2018
webmaster10 | Kategorie: PHP/ News
|
tsShoutbox
Textbasierte Shoutbox (kein MySQL nötig) mit Admin-Control-Panel zum Verwalten der Farbeinstellungen und Shoutboxoptionen, Archiv, Löschfunktion, Seiten- bzw. Blätterfunktion, Smilies, Badword-Filter, Überprüfung falscher Eingaben.
10.04.2018
webmaster10 | Kategorie: PHP/ Shoutbox
|
Domain Checker v1.1 Pro
Domainchecker (Whois) für folgende Domains: .de, .com, .net, .org, .info, .biz, .at, .ch, .li, .co.uk, .tv, .cc, .dk, .it, .ws
10.04.2018
webmaster10 | Kategorie: PHP/ Domains
|
Alle PHP Scripte anzeigen
|