meerder keren inloggen voorkomen

Status
Niet open voor verdere reacties.

brakkeleer

Gebruiker
Lid geworden
27 mei 2006
Berichten
296
hallo,

ik heb een inlogsysteem dmv sessions.
Iemand vraagt een gebruikersnaam en wachtwoord aan en ik klop deze in in mijn cms systeempje en de gebruiker kan inloggen. Werkt als een trein. Dus dat is niet het probleem. Wat is dan wel het probleem.

Ik wil voorkomen dat mensen 2 x met dezelfde gebruikersnaam tegelijkertijd inloggen.
Dus je mag maar 1 x inloggen met 1 gebruikersnaam en wachtwoord.
Mijn systeem zoals het nu is kun je zo vaak inloggen met dezelfde gebruikersnaam en wachtwoord.

Mijn code :
if(!isset($_SESSION["suser"]))
{
unset($_SESSION["suser"]);
unset($_SESSION["sname"]);
unset($_SESSION["scontact"]);
session_destroy();
header("Location:" . $company_website . "/index.php");
}

?>

Weet iemand hoe ik dit kan verbeteren?

ALvast bedankt !
 
Mja wat je zou kunnen doen is het IP adres van de gebruiker te kunnen verbinden aan een gebruiker sessie. Wanneer mensen dan vanaf een andere PC (dus waarschijnlijk ander IP adres) inloggen, dat de vorige sessie en/of de huidige worden gedestroyed.

Dit word veel gebruikt, maar zorgt in sommige gevallen ook voor het welbekende 'dubbele inloggen' (dus dat men inlogd, maar dan niet ingelogd is - door dat beide sessies worden verwijderd - als men hierna nogmaals probeerd, gaat het dan wel goed).

Let hier dus op ;-)

Succes! (ik heb verder geen verstand van sessions / cookies e.d. dus kan je geen voorbeelden geven)
 
ip adres is geen optie helaas....
Aangezien je IP adres wel eens kan veranderen zou dat al irritant zijn, maar nog groter probleem is eigenlijk dat er meerdere mensen vanaf hetzelfde ip adres af MOETEN kunnen inloggen.

Dus ik wil alleen voorkomen dat de gebruikersnaam 2 x tergelijkertijd ingelogd kunnen zijn.

wel bedankt voor het meedenken.
 
Extra tabel in mysql? (Als je dat gebruikt) vul daar gewoon elke keer als iemand inlogt de user id in en de tijd van laatste actie, en bij inloggen kijk je of die in de tabel staat binnen (bijv) een uur geleden.

Rubdos
 
ok dat zou een super oplossing zijn.
Maar kan ik ook (ik werk idd met mysql) een extra tabel aanmaken en gewoon kijken of ie daar al in staat, als ie daar in staat dat ie dan niet kan inloggen?
 
Mja, dat zou kunnen; maar lijkt me geen fijne optie gezien men vaak vergeet uitteloggen..
Je zou dit kunnen doen door te een if statement te maken, met daarin te kijken of een sessie al bestaat ja of nee.

Zo ja, dan { echo 'Je bent al elders ingelogd' } en anders else { echo 'Welkom!' } :)
Snap? Mogelijk betere optie vind ik dat je op een of andere manier een uniq-id genereert per computer (icm met een cookie ofzo) en dan wanneer vanaf een andere pc word ingelogd deze gewoon simpel weg 'vervangt' (zodat de gebruiker dan op de pc waar deze eerder zat ingelogd, uitgelogd word..)

Weet niet hoe dit in je concrete script vormgegeven moet en kan worden, maar moet je maar zien wat de mogelijkheden zijn..

Groet!
 
ik heb de vraag op opgelost gezet.
Hoewel dit niet helemaal waar is bedank ik jullie toch voor de hulp.
Ik heb in elk geval advies gekregen hoe ik verder kan!
 
Zeg, en als je nu een extra field aanmaakt en daar een tijdstempel in zet, en die met de huidige vergelijkt, dan zie je toch of iem ergens anders is ingelogd? bv:

bij het inloggen: $sql = "UPDATE users SET lasttimeloggedin = ".time()" WHERE user_id = ".$user_id;

en bij het checken $sql = "SELECT * FROM users WHERE lasttimeloggedin < " . time() + 3600 ." AND user_id = " . $user_id; => geen rows is elders ingelogd

mss kan je hier iets mee?

Rubdos
 
tijdsgebonden werken is geen heel goed idee Rubdos. Het gebeurt maar al te vaak dat ik mijn browser sluit, mijn pc afsluit en vanaf mijn 2de computer opnieuw wil inloggen. Dat zou jij mij binnen het eerstkomende uur verbieden..

Het is mss mogelijk om adhv javascript/AJAX een request te versturen naar een uitlogpagina op het onunload event. Op die pagina verwijder je het record uit je tabel die bijhoudt wie ingelogd is.
 
Vraag niet aan mij om zo'n script te schrijven, ik kan wel ajax, maar heb toch ff geen zin...
Wel een goed idee...
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan