Uitloggen op afstand
Ik heb een systeem ik zou graag als 'hoofdgebruiker' andere mensen willen uitloggen vanaf mijn eigen pc. Net zoiets als bij Facebook (die houd je inlogs bij en kan dan andere PC's etc uitloggen). Alleen hoe gaat zoiets in zijn werk?
Ik dacht zelf door een extra tabel aan te maken zoiets als 'users_session'. Elke keer als een gebruiker inlogd word hier een record in geplaatst en gekoppeld aan de gebruiker mbv sessies (zo kan ik ook eventueel bij houden op welke IP's etc ze werken). Het systeem kijkt dan of er bij de ingelogde gebruiker een record gevonden is van de huidige inlog. Zo ja dan is gebruiker gewoon ingelogd, Zo nee dan is de gebruiker uitgelogd. Dus als ik dan een record verwijder uit de 'users_session' kan ik gebruikers uitloggen.
Zijn er mensen die dit ook zo zouden aan pakken of zouden mensen die anders aanpakken?
Sessie van de gebruikers opslaan in de database en op elke pagina controleren of de sessie nog bestaat in de database. Zo kun je dus als 'hoofdgebruiker' de sessie verwijderen en is de gebruiker dus uitgelogd.
Wat er bij het inloggen gebeurt: Er wordt in de database een 'inlogsessie' aangemaakt (geen php-session) met daarin de UserID, Een unieke MD5-hash en ook het IP van de gebruiker (indien nodig).
Bij het inloggen wordt er een cookie geplaatst met het UserID en de MD5-hash, deze worden bij elke inlogcontrole in een functie met elkaar vergeleken, en als ze overeenkomen dan levert de login_check() een TRUE op, anders FALSE.
Het IP die in de database bij de sessie kan worden opgeslagen is voor de veiligheid. Hiermee kan je in de functie controleren of het IP ook overeenkomt (als die ingevuld), waarna mensen ook niet met het stelen van je cookie je inlogsessie over kunnen nemen. Ik vind dit een keuze die de gebruiker moet maken, hoewel je zelf deze standaard aan kan vinken als optie: "Koppel inlog vast aan mijn IP".
Een voorbeeld van dit script kan je vinden op:
http://multisess.clayweb.nl. Wel wil ik er graag bij vermelden dat ik dit script niet meer up-2-date houd en dat het behoorlijk verouderd is, en dat foutafhandeling e.d ontbreekt.
Als iemand dit wilt 'forken' voor een eigen login-systeem, graag, maar dan wel met mijn credits. En laat het even weten aan mij, wel zo leuk.... ;-)