Beste PHP'ers,

Ik had even een vraagje..

Ik ben momenteel bezig met cookies tbv login.
Maar nu zit ik te denken op wat voor manier ik dit moet doen.

Want om maar een voorbeeld te nemen, Facebook:
Of ik nu inlog via mijn telefoon of via mijn computer. Hij kan mij op beide apparaten herkennen.

Is dit misschien doordat er een aparte code in de cookie staat?
Voorbeeld:
SQL:
email - wachtwoord - cookie_code

Iemand logt in met zijn wachtwoord.
In de cookie zet ik dan de ge-encrype cookie_code.

Wanneer ik dan de volgende dag terug kom kan het script mij herkennen aan de cookie_code en mij dus direct laten inloggen.

Werkt dit zo of moet ik het heel anders zien, het lijkt mij niet de veiligste manier..
Ik hoor graag jullie mening.
je vraagt je dus af hoe een ingelogd blijven cookie werkt?

in een databas een tabel maken
timestamp_laatsteinlog | id_gebruiker | cookie_data | cookie_verval

iedere keer dat de persoon inlogt via de code verwijder je de cookie en zet je die er opnieuw in (om zo iedere keer 30 dagen of zo na laatste login te laten vervallen.

je vraagt het id van de gebruiker waar de cookie_data gelijk is aan die van de cookie en je kijkt ook even of de echte cookie nog niet vervallen is met cookie_verval (hackers) (let ook op brute force hack is zo mogelijk dus werk daar een systeem achter.)

je kan enkel een cookie zetten helemaal bovenaan je pagina (nog geen output)
Ah ok.
Er staat dus wel een soort van wachtwoord / id op de user zijn computer om hem te identificeren.

Maar als iemand anders de cookie zou stelen dan zou hij ook "inloggen" op je website zonder een wachtwoord in te voeren..
vandaar dat je even moet kijken naar browserfingerprinting...bijv ip in combinatie met wat browser informatie ;)
Okj, maar dan zit je weer met te probleem dat je maar op 1 apparaat tegelijk ingelogd kan zijn..
nee hoor...alleen dat dat zelfde koekje niet gebruikt kan worden ergens anders...voor iedere sessie wordt een koekje aangemaakt...je kan dan prima ingelogt zijn op twee machines...dat is ook de standaardwerking..wil je dat niet, dan pas moet je gaan rommelen met set_session_save_handler om de sessie info in de db te zetten en te verwijderen indien de gebruiker ergens anders inlogt ;)
Wat ik gebruik is een cookie met daarin een hash en een uniek id. Diezelfde hash en id sla ik op in de database, waarbij dan ook het user_id staat. Als de gebruiker terugkomt naar de site check ik dat cookie tegen de database en komen hash en id overeen, dan log ik de user in. Tegelijk maak ik een nieuw record aan met nieuwe hash en nieuw id, cookie wordt ook opnieuw geplaatst.
Komen ze niet overeen, dan verwijder ik het cookie en is de gebruiker dus niet ingelogd.

Omdat de hash en id niet in de users tabel staan, kan een gebruiker meerdere sessies op die manier open houden over verschillende apparaten.

Edit: in combinatie met dat browserfingerprinting kan je het gevaar van stelen van cookies dan nog verminderen.
Waarom niet werken met sessies?
@Not Moose..omdat je dan niet ingelogt blijft als je je browser sluit?
Ik gebruik session bij mijn login, maar heb vaak dat ik soms na enige tijd opnieuw moet inloggen, ondanks ik de browser niet gesloten heb.
wordt een sessie na enige tijd vanzelf verwijderd of alleen naa het sluiten van de browser?
Meestal sluit de session als de browser wordt gesloten. Maar je kan ook de lifetime instellen in php.ini.

Reageren