Waarde opslaan bij einde session en bij sluiten pagina

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Hans De Ridder

Hans De Ridder

10/09/2017 00:58:55
Quote Anchor link
Ik wil voorkomen dat dezelfde account tegelijk in andere browser of PC geopend kan worden.
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.
 
PHP hulp

PHP hulp

20/04/2024 00:53:08
 
- Ariën  -
Beheerder

- Ariën -

10/09/2017 01:03:53
Quote Anchor link
Voor zover ik weet zijn er geen mogelijkheden om te kijken of een browser is afgesloten om de waarde om te zetten.

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 -
 
Rob Doemaarwat

Rob Doemaarwat

10/09/2017 10:52:46
Quote Anchor link
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').
 
Hans De Ridder

Hans De Ridder

10/09/2017 11:15:17
Quote Anchor link
Het gaat ook allemaal uitsluitend om de inlogsessie.
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.
 
Eddy E

Eddy E

10/09/2017 11:33:00
Quote Anchor link
En waarom zou je niet met je telefoon en je pc/tablet/ding tegelijkertijd ingelogd mogen zijn? Wat gebeurt er dan?
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.
 
Hans De Ridder

Hans De Ridder

10/09/2017 11:40:41
Quote Anchor link
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...
 
Ward van der Put
Moderator

Ward van der Put

10/09/2017 12:52:36
Quote Anchor link
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.
 
Rob Doemaarwat

Rob Doemaarwat

10/09/2017 17:09:02
Quote Anchor link
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 ...
 
Ben van Velzen

Ben van Velzen

10/09/2017 17:15:49
Quote Anchor link
Het komt er gewoon op neer dat dit weer typisch zo'n geval is van een "beveiliging" die mensen alleen maar dwars gaat zitten. Bijvoorbeeld:
>> 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.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

10/09/2017 17:20:30
Quote Anchor link
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...

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.
 
Hans De Ridder

Hans De Ridder

10/09/2017 19:01:23
Quote Anchor link
Dit heeft niet zozeer met heveiliging te maken.
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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.