Waarde opslaan bij einde session en bij sluiten pagina
Ik los dit op door de waarde 1 op te slaan als er wordt ingelogd.
Die waarde voorkomt dat een ander kan inloggen
gedurende een lopende session.
Tot zover niks bijzonders.
Zolang leden gewoon netjes uit zouden loggen. (Waarde wordt op 0 gezet)
Maar ik moet de waarde 0 ook zetten als de pagina gesloten wordt of de sessie is afgelopen.
Anders blokkeert het inloggen voor het lid de volgende keer.
Ben al tig scripts tegen gekomen, met evenveel commentaar.
Want het vergelijken van LastLogin met actuele tijd gebeurt maar 1 keer.
Je logt in principe maar 1 keer in.
Tenzij je er een soort settimeout gebruikt om tijden te vergelijken.
Is er een mogelijkheid om bij het eind van een sessie een waarde 0 op te slaan.
En ook bij het sluiten van een pagina (of moet dat via client (javascript, enz)?
Ik ben een weekje weg, dus weet niet of ik snel kan reageren.
Maar een voorbeeld scriptje wordt op prijs gesteld.
Maar waarom de beveiliging om op max. 1 device ingelogd te zijn? Ik zou het reuze onhandig vinden. En beter idee is een sessie-management om sessies, die aangemaakt zijn op andere locaties, te beheren.
Gewijzigd op 10/09/2017 01:06:20 door - Ariën -
In plaats van '1' op te slaan zou je dan de huidige tijd op moeten slaan. Als de opgeslagen tijd dan meer dan x minuten geleden is, mag de gebruiker pas opnieuw inloggen (bij bewust uitloggen tijd dus op null zetten ipv '0').
Dat is gescheiden van de website zelf.
De website zelf is gewoon openbaar.
Zolang iemand is ingelogd (en wijzigingen aanbrengt in zijn registratie of gewoon even wil kijken bij gegevens)
Dan staat de waarde op 1.
De inlog en verwijzingen naar wijzigingen, vragen om ander ww enz, gebeurt via wijzigingen in de headers.
Er staat dus telkens maar 1 pagina open.
die kan ik afsluiten door de sessie te beeindigen (waarde weer naar 0)
Maar zou ook kunnen dat iemand gewoon de pagina sluit.
Of de sessie zelf is afgelopen.
Dan moet de waarde weer naar 0.
En daar zit mijn probleem.
Ik zou eventueel ook altijd eerst kunnen verwijzen naar de welkomstpagina.
En vandaaruit naar de website.
En zo de waarde op 0 zetten.
Maar gaat er vooral om dat ik niet wil dat er elders of op dubbele browser dezelfde accounts open staan.
Met tijdsverschillen werken, dat gaat niet.
Omdat je altijd maar 1 keer de procedure doorloopt van inloggen.
En dan wel tijd kunt bekijken. Maar geen tijdsverschil.
Bedankt overigens voor de snelle reactie.
Dan ben je 2x ingelogd? Dus?
Dan kan je op beide apparaten gegevens zien/wijzigen? Dus?
Wil je niet dat er wijzigingen tegelijkertijd gedaan worden: controleer VOOR het verzenden van het formulier (dat misschien gewijzigd is) of er wijzigingen zijn geweest. Ook hier: werk met een datetime.
Rob zegt dat je de tijd moet opslaan. Dat is dé manier om dit te doen.
Maar ik zie geen mogelijkheid om tijdsverschillen te meten.
Want je komt na een vergelijking nooit meer voorbij dat punt bij inloggen.
Heb het al geprobeerd met een timertje die om de 10 seconden die verschillen meet.
Maar krijg het niet werkend...
Je kunt $_SERVER ['HTTP_USER_AGENT'] opslaan voor de sessie, want deze string is vrijwel uniek voor elk apparaat. Zie je dat de user agent van een gebruiker verandert, dan wordt de gebruiker dus overal uitgelogd, behalve op het apparaat waarmee hij op dat moment inlogt.
Nou ja, uniek ... Meest recente versie browser op meest recente Windows is toch niet zo heel uniek. Daarnaast, als iemand even een browser update tussendoor doet behoudt ie z'n sessie (session cookie is nog geldig), maar wijzigt juist z'n User-Agent ...
>> Er staat dus telkens maar 1 pagina open.
Droom lekker verder. Mensen gebruiken tabbladen. Wanneer je dit gaat inperken is het resultaat niet dat mensen zeggen "oh ik hou 1 tabblad open" maar "rot lekker op, ik ga wel ergens anders heen".
Hetzelfde geldt voor het beperken van gebruik op andere apparaten, zoals bijvoorbeeld tablets of telefoons. Mensen gaan zich aan je ergeren en je ziet ze nooit weer terug.
Hans De Ridder op 10/09/2017 11:40:41:
De LastLogin tijd wordt ook opgeslagen.
Maar ik zie geen mogelijkheid om tijdsverschillen te meten.
Want je komt na een vergelijking nooit meer voorbij dat punt bij inloggen.
Heb het al geprobeerd met een timertje die om de 10 seconden die verschillen meet.
Maar krijg het niet werkend...
Maar ik zie geen mogelijkheid om tijdsverschillen te meten.
Want je komt na een vergelijking nooit meer voorbij dat punt bij inloggen.
Heb het al geprobeerd met een timertje die om de 10 seconden die verschillen meet.
Maar krijg het niet werkend...
Je zou bij ieder request die door een ingelogde gebruiker gedaan wordt de tijd moeten opslaan. Niet alleen bij de login. LastRequest wordt het dan. Daarnaast zou je de gebruiker kunnen vragen of hij zijn vorige sessie wil beëindigen (die op het andere apparaat) dat zou een stuk gebruiksvriendelijker zijn.
Het is een promotiesite waar tal van informatie gegeven kan worden.
En ook uploaden van bestanden is toegestaan.
Daar kan een verwijzing naar een website, youtube, etc.. al
snel leiden tot vergeten.
Het is onzinnig om dat op 2 PC te doen of op meerdere browsers.
Maar ik wel het ook voorkomen.
Bovendien.... Ik heb al eerder gezegd.
Het is een experimentele site ook.
Waar ik ook graag wat experimenteer.
Of ik het daarna zal toepassen is een tweede.
Bedankt voor de reacties....
Met 1 pagina open bedoel ik ook van MIJN website.
Natuurlijk kunnen er ook andere tabbladen openstaan.
Toevoeging op 10/09/2017 22:05:42:
In het script wordt gebruik gemaakt van redirect in de header.
Als er nu een stukje ingevoegd kan worden die kijkt
of er een redirect komt en anders via een unload functie de waarde weer op 0 kan opslaan
als de pagina gesloten wordt?
Misschien een deel via Javascript?
Ik kwam op idee via deze link:
https://stackoverflow.com/questions/32009809/onunload-and-onbeforeunload-not-triggered-when-location-changes
Gewijzigd op 10/09/2017 19:06:43 door Hans De Ridder