11. november 2003 - 09:42Der er
7 kommentarer og 1 løsning
login og sessions
Har lavet et login med php/MySQL og sessions som virker tilfredsstillende. Nu har jeg imidlertid nogle flere krav til loginen, som jeg håber nogle herinde kan hjælpe med.
Vil gerne have at en og kun en person logger ind med samme brugernavn/password af gangen. Understøtter sessions på nogle måder denne funktionalitet? Eller skal jeg selv lave en løsning, hvor jeg f.eks. skriver logintidspunktet eller ip/portnummer på den maskine der logger på.
Det er underordnet om den sidste der logger på slet ikke kan komme ind, eller om han smider den første der er logget ind af....
Du misforstår mig. Kombinationen brugernavn/password er unik. Det jeg vil undgå er, at 2 personer kan være logget på samtidig med samme brugernavn/password. (det kan de nemlig godt i standard sessions)
Tror jeg ville lave en "loginsdb", smide session_id(), brugernavn og et unix timestamp ind timestamp'et skulle opdatere ved hver aktivitet på siden. Når der logges ind, tjekkes så også op med loginsdb, og er timestamp så ældre end f.eks 10 min, så er det ok, og et evt. row med brugernavnet kan slettes.
...altså lave en tabel, hvor jeg skriver alle logins? (skal lave en alligevel, så ikke nogen dårlig ide). Men bliver den ikke tung at løbe igennem, hvis der er mange logins? Vil du slette alle ældre end 10 min? Er ikke helt med på hvad du mener med "Unix Timestamp"? Er det ikke blot serverens tid som skrives i databasen?
Er faktisk ved at prøve at lave det! :O) Altså, ved login, tjekker man først "normal" db med bruger og pass. Er det ok, så tjekkes om navnet ligger i loginsdb, og gør det ikke det, så gemmes brugernavn, session_id og timestamp,(sek. siden 1-1-1970), i loginsdb.
Men findes brugernavnet i loginsdb, tjekkes timestamp, og er det ældre end f.eks. 10 min., ja, så slettes rowet, og et nyt laves. Men er det IKKE ældre, så kan man ikke logge ind. D.v.s. så også sige at hvis man ikke bruger et logud link, men blot lukker browservinduet, ja så vil man ikke kunne logge ind igen førend de 10 min.
Om det skal være 10. min afhænger vel af indhold på sitet. (billeder af qui.... kan man jo godt dvæle ved et stykke tid! :O])
Ved hver request, når man er logget ind, skal timestamp så opdateres til aktuel tid, i det row som svarer til session_id og brugernavn.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.