Vi har idag ett system där man kan logga in sig med användarnamn och lösenord. För att hålla reda på det så används sessioner. använd IP.. gör som så att du lagrar senast använda IP i databasen (vid inloggningen), lagra även detta i en sessionID.. om sen sessionIP inte stämmer med det i databasen (som då sker om nån loggar in från annat IP) så loggas man ut med meddelandet "Någon har loggat in med detta konto från en annan dator.. yadayada" Tyvärr fungerar ju det bara om de som loggar in inte sitter bakom samma brandvägg. deviantart nyttjar cookies på något sätt för att åstadkomma det du vill.. exakt hur vet jag inte dock.. Förslag: När man loggar in sparas ett nytt, slumpat, id i både session och i databasen för användaren. Sedan kan man jämföra det där, och stämmer de inte överrens så har någon annan loggat in. t.ex klockslaget.. med datum och alltihop Varför inte bara lagra Inloggad=1 när man loggat in korrekt? Spara sessionID i användar-tabellen sedan kan du kolla mot det, då är det bara den senaste inloggade som får tillgång till siten. > Sen kan man ju kolla så att Inloggad måste vara ex. 0 innan man får logga in på det kontot. dumt system.. det gör att om jag råkar stänga min webläsare så måste jag vänta 20min innan jag kan logga in igen Hej, Cookies är ju en dålig lösning, man måste ju kunna jobba från olika datorer med sitt konto. Det är väl här som problemet ligger som jag ser det. > Det är väl här som problemet ligger som jag ser det. Jag ska uppnå att man bara kan använda kontot själv. Användarmässigt så hade jag tänkt mig att den som är inloggad få vara kvar och de andra nekade. Då måste du nog använda dig av cookies spara ner en unik sträng, spara samma i databasen, uppdatera varje gång en aktivitet sker på sidan. > Användarmässigt så hade jag tänkt mig att den som är inloggad få vara kvar och de andra nekade. Om du vid varje anrop uppdaterar strängen i cookien och dessutom sätter timeout på cookien så är det inte ett problem. Jo, under den timeouten så går det isf. inte att logga in igen. Skulle vara om man har en väldigt kort timeout (15 sekunder) och konstant med ajax laddar något från servern Du har flera olika lösningar att välja på och alla har sina för och nackdelar.Kontrollera om flera användare loggar in samtidigt med samma konto
Om man skulle vilja kontrollera att bara en användare i taget nyttjar det kontot, vilket är det lämpligaste sättet att göra det på då?
Miljö är just nu PHP & MySQL, men det är väl kanske inte så viktigt, mer angreppssättet...
Inom kort ska en cookie-lössning läggas till för de som vill bli inloggade automatiskt.Sv: Kontrollera om flera användare loggar in samtidigt med samma konto
Sv:Kontrollera om flera användare loggar in samtidigt med samma konto
Sv: Kontrollera om flera användare loggar in samtidigt med samma konto
Sv:Kontrollera om flera användare loggar in samtidigt med samma konto
Sv: Kontrollera om flera användare loggar in samtidigt med samma konto
Sv: Kontrollera om flera användare loggar in samtidigt med samma konto
Sen kan man ju kolla så att Inloggad måste vara ex. 0 innan man får logga in på det kontot.
/ PerSv:Kontrollera om flera användare loggar in samtidigt med samma konto
Anv1 loggar in sessionID i tabellen uppdateras med nytt SessionsID
Anv1 surfar runt på siten
Anv2 loggar in sessionID i tabellen uppdateras med nytt SessionsID´
Anv1 blir utloggad då dennes SessionID inte stämmer med senast inloggad SessionID.
//HenkeSv:Kontrollera om flera användare loggar in samtidigt med samma konto
När har du tänkte att sätta "Inloggad" till 0?Sv:Kontrollera om flera användare loggar in samtidigt med samma konto
lagra sessionID/klockslag i databas och session istället vid inloggning.. stämmer dom inte så kräv ny inloggning (kan ju även logga om dessa två inte stämmer väldigt ofta och då låsa kontot då det troligen betyder att personen antingen delat med sig av kontot eller fått det hackat)Sv: Kontrollera om flera användare loggar in samtidigt med samma konto
Vet inte vem du svara på men, men det jag och Oskar Johansson skrev så förutsätter man ju att den som loggat in senast är den som får vara kvar på siten. Dvs om du stänger din webbläsare och loggar in igen så är det du som har den aktiva sessionen, det kan väl inte skapa några problem eller?
//HenkeSv:Kontrollera om flera användare loggar in samtidigt med samma konto
Sv: Kontrollera om flera användare loggar in samtidigt med samma konto
- Vad händer om man måste stänga fönstret och man använder sessions
- Det är ju inte alla som loggar ut, hur löser man sånt? Kolla hur länge sedan någon varit aktiv?Sv:Kontrollera om flera användare loggar in samtidigt med samma konto
> - Vad händer om man måste stänga fönstret och man använder sessions
> - Det är ju inte alla som loggar ut, hur löser man sånt? Kolla hur länge sedan någon varit aktiv?
Alltså, vad är det du vill uppnå? Många av lösningarna har inte de problem du nämner, fast de fungerar så att den som senast loggade in sparkar ut de andra med samma konto.Sv: Kontrollera om flera användare loggar in samtidigt med samma konto
Men jag kanske ska ändra angreppssätt, måste fundera på det.Sv:Kontrollera om flera användare loggar in samtidigt med samma konto
On någon försöker logga in kolla när användaren senast va aktiv i db+20 minuter (eller nåt) om användaren varit aktiv senaste tiden så kontrollera mot cookie att unika strängen är samma som i databasen. Då är det ok att logga in.
//Henke Sv:Kontrollera om flera användare loggar in samtidigt med samma konto
Det kräver att att servern vet när en användare är utloggad;
a) Användaren loggar ut aktivt
b) Användarens session blir för gammal och anses utloggad
Dvs: Om användaren råkar stänga webbläsaren så anser servern fortfarande användaren inloggad i, säg, 20 minuter. Innan dess kan användaren isf. inte logga in.Sv: Kontrollera om flera användare loggar in samtidigt med samma konto
Sv:Kontrollera om flera användare loggar in samtidigt med samma konto
Sv:Kontrollera om flera användare loggar in samtidigt med samma konto
En simple lösning är att du loggar ner i databasen vilken användaer som är inlogga och senast tiden, detta görs vid varje sidanrop. Sedan kan du själv bestämma en TimeOut tid (har inget med session-tiden att göra). Säg 5 minuter. Om nu en annan person loggar in innan det gått 5 minuter så får man inte det, om det gått mer än 5 minuter så ändras användaren och den personen är inloggad.
Om samma person skulle stänga sin webläsare och öppna den igen och logga in så kommer ju den användren stå i databasen som redan inloggad och han kommer komma in.
Detta kan dock göra att användaren slängsut från sidan fast han inte är "färdig" för han sutit och läst på en sida i 5 minuter, ökar du den tiden så blir timeouten längre för övriga användare att logga in om den andra användaren loggar ut korrekt. (nu finns det sätt att minimera dessa problem).
Är det viktigt för dig att man inte kan kasta ut en användare som är inloggad och samtidigt att om denna person inte loggar ut korrekt, så skall "Timeout" tiden vara så kort som möjligt så är oskars förslag med en AJAX-lösning vägen att gå, den är dock mer komplex och prestandakrävande, men visar en mer korrekt världsbild.
- M