Session en Date()
Ik heb een vraag over Session en date().
Ik maak gebruik van CET maar de tijd word maar in een 12 uurs notatie geplaatst.
In plaats van 23:00 krijg je 11:00.
Ik heb dit om de tijd op te halen:
Hoe zorg ik dat deze alsnog in 24 uren weergeeft? Wat doe ik verkeerd?
Ik sla deze tijd op in een sessie.
Ik wil doormiddel van het controleren van deze sessie de gebruiker laten uitloggen bij inactiveit voor een bepaalde tijd.
Bijv, als de session al 30 minuten niet meer is geupdate.
Maar ik heb geen idee hoe ik dit doe. Iemand die mij opweg kan helpen?
En is het ook mogelijk om de sessie te verwijderen wanneer de gebruiker de browser sluit? En zoja? Hoe ?
http://php.net/manual/en/function.date.php
Je formaat ('d/m/Y h:i:s') wat aanpassen, H ipv h zie Gewijzigd op 08/03/2018 21:22:00 door Aad B
strftime aanraden. Let er dan wel op dat de notatie dan anders is.
Persoonlijk zou ik Quote:
To format dates in other languages, you should use the setlocale() and strftime() functions instead of date().
Ik hou het even bij date().
En hoe kan ik na bepaalde tijd die sessie destroyen?
met deze setting (kan je uitvoeren in ini_set bijv.) kan je de leeftijd van een session-cookie bepalen in seconden.
Is het niet afdoende dat sessies (of liever gezegd, sessie-bestanden) na verloop van tijd vanzelf opgeschoond worden? Het feit dat je een sessie-bestand op afroep destroyed houdt in dat er op dat moment een gebruiker de sessie raadpleegt, en dat houdt dan toch in dat er activiteit is? Ik vraag mij dan ook af waar het vandaan komt dat je expliciete timeouts wilt inbouwen in sessies? En of een sessie daar dan wel de goede plaats voor is.
Als je al de tijd op slaat kun je ook gewoon time() zelf opslaan. Controleren op "een half uur" wordt dan gewoon kijken of er al 1800 seconden verstreken zijn. Heb je helemaal geen gedoe met steeds "omrekenen" van/naar een bepaald formaat.
Hoe kan ik de sessie destroyen wanneer de site gesloten wordt?
Jasper Schellekens op 08/03/2018 22:15:58:
Hoe kan ik de sessie destroyen wanneer de site gesloten wordt?
@Jasper, dat zeg ik dus, dit soort opmerkingen doen mij vermoeden dat je niet helemaal begrijpt hoe sessies werken. Waarom zou het nodig zijn om sessies expliciet te verwijderen? Je communiceert met een sessie via een cookie. Dit is het medium via welke je in verbinding staat met je sessie. Als dit cookie weg is is in feite de link met de sessie ook verdwenen. Na een bepaalde inactiviteit wordt het sessie-bestand vanzelf opgeschoond via garbage collection...
Dus nogmaals, waarom zou het expliciet opschonen van sessies nodig zijn? :/
Thomas van den Heuvel op 09/03/2018 02:50:55:
@Jasper, dat zeg ik dus, dit soort opmerkingen doen mij vermoeden dat je niet helemaal begrijpt hoe sessies werken.
Dus nogmaals, waarom zou het expliciet opschonen van sessies nodig zijn? :/
Dus nogmaals, waarom zou het expliciet opschonen van sessies nodig zijn? :/
Ik weet eigenlijk wel hoe sessies werken maar om mijn ervaring uit te breiden kom ik hier. Als ik helemaal zou begrijpen hoe sessies werkten zou ik dit topic ook niet gemaakt hebben, of wel?
Om terug te komen op je vraag, beetje irrelevant om de reden hier te posten maar goed; de reden dat ik wil dat sessies verwijdert worden wanneer de browser gesluit wordt is veiligheidsredenen. Wat als jij een administrator bij onze game zou zijn en (het zal niet veel voorkomen maar het kan altijd)je vergeet uit te loggen waardoor iemand opeens toegang krigjt tot het admin paneel met alle gevolgen van dien. Misschien heeft de persoon die nu toegang gekregen heeft wel toegang verkregen via de browser history. Als de sessies worden verwijderd op het moment dat de browser sluit dan is dit niet mogelijk.
Wat betreft sessies na een bepaalde tijd verwijderen doe ik omdat ik wil dat sessies na 10 minuten inactiveit al verwijderd worden. Ik meen ergens gelezen te hebben dat sessies standaard maar een klein half uurtje bestaan.
Gewijzigd op 09/03/2018 15:09:18 door Jasper Schellekens
Het belangrijkste is dat tijdens het inloggen vaak genoeg session_regenerate_id gebruikt, zodat de sessionID steeds verandert, en de oude ongeldig worden verklaard.
Ik denk dat je ook moet controleren of iemand actief is in een bepaalde tijd, waarna de sessie verwijderd wordt. Een kwestie van een soort heartbeat door middel van AJAX.
Gewijzigd op 09/03/2018 15:26:43 door - Ariën -
Jasper Schellekens op 09/03/2018 15:08:04:
Ik weet eigenlijk wel hoe sessies werken maar om mijn ervaring uit te breiden kom ik hier. Als ik helemaal zou begrijpen hoe sessies werkten zou ik dit topic ook niet gemaakt hebben, of wel?
Het feit dat je hier een vraag stelt geeft aan dat je niet precies weet wat je zou moeten doen anders zou je, zoals je zelf zegt, die vraag niet stellen.
Jasper Schellekens op 09/03/2018 15:08:04:
Om terug te komen op je vraag, beetje irrelevant om de reden hier te posten maar goed;
Nee, dat is wél relevant, dat bepaalt namelijk de oplossingsrichting. Je schetst geen enkele context, hoe moeten wij dan weten wat je probeert te bereiken en of datgene wat je voorstelt sowieso wel de juiste oplossing is voor je onbekende probleem? Sterker nog, je bent er al van overtuigd (op grond waarvan?) dat de oplossing het opschonen van de sessie is, nog zonder dat je uberhaupt uitlegt wat het probleem is.
Jasper Schellekens op 09/03/2018 15:08:04:
de reden dat ik wil dat sessies verwijdert worden wanneer de browser gesluit wordt is veiligheidsredenen. Wat als jij een administrator bij onze game zou zijn en (het zal niet veel voorkomen maar het kan altijd)je vergeet uit te loggen waardoor iemand opeens toegang krigjt tot het admin paneel met alle gevolgen van dien. Misschien heeft de persoon die nu toegang gekregen heeft wel toegang verkregen via de browser history. Als de sessies worden verwijderd op het moment dat de browser sluit dan is dit niet mogelijk.
Wat betreft sessies na een bepaalde tijd verwijderen doe ik omdat ik wil dat sessies na 10 minuten inactiveit al verwijderd worden. Ik meen ergens gelezen te hebben dat sessies standaard maar een klein half uurtje bestaan.
Wat betreft sessies na een bepaalde tijd verwijderen doe ik omdat ik wil dat sessies na 10 minuten inactiveit al verwijderd worden. Ik meen ergens gelezen te hebben dat sessies standaard maar een klein half uurtje bestaan.
Ik hoop voor jou dat je een beetje bekwame admins hebt dan want tegen stupiditeit is geen kruid gewassen. Geen enkele mate van beveiliging zal je redden wanneer de gebruikers hun apparaat onbeheerd achterlaten.
Ook kun je je natuurlijk op meerdere manieren wapenen tegen dit soort ongein (in het ergste geval: maak je regelmatig backups?).
Ik hoop ook van harte dat je geen gebruikersrechten of -rollen opslaat in de sessie zelf, dit is namelijk geen goed ontwerpprincipe. Ook maakt dat het intrekken van privileges ingewikkelder wanneer iemand anders een account "leent".
En wat @Ariën zei klopt, als je de sessie cookie leeftijd instelt op 0 wil dit zeggen "geldig totdat de browser gesloten wordt". Zie de documentatie. Dit is toch vrij elementaire kennis van sessies zou ik zeggen...
Ik zou wel testen of dit ook het gewenste resultaat oplevert. Ook zou je aan een feature kunnen denken waarbij je bij het inloggen aanvinkt of je op een publieke plek inlogt en op grond daarvan de lifetime bepaald wordt. En je zou aan mechanismen kunnen denken waarbij het inloggen (onder water automatisch) "doorgestart" kan worden waarbij effectief je login onthouden wordt.
Gewijzigd op 09/03/2018 16:14:55 door Thomas van den Heuvel
Thomas van den Heuvel op 09/03/2018 16:13:16:
Ook kun je je natuurlijk op meerdere manieren wapenen tegen dit soort ongein (in het ergste geval: maak je regelmatig backups?).
Ook kun je je natuurlijk op meerdere manieren wapenen tegen dit soort ongein (in het ergste geval: maak je regelmatig backups?).
Bedankt voor de tips. Er worden inderdaad regelmatig backups gemaakt maar liever voorkomen dan genezen. Ik heb alles zo gemaakt dat het ook een log opslaat dus in principe valt elke actie na te gaan inc de tijd en ip adres van gebruiker op dat moment word dan ook opgeslagen, zo zou je erachter kunnen komen wie onbevoegd toegang tot het account heeft gehad(als iemand gehackt is ofzo). Zo hadden we gister iemand die probeerde in te loggen op iemand anders account en de admins hebben hier meteen een halt toe geroepen toen dit bekend werd. Het was namelijk het ip address van een andere gebruiker.
Thomas van den Heuvel op 09/03/2018 16:13:16:
Ik hoop voor jou dat je een beetje bekwame admins hebt dan want tegen stupiditeit is geen kruid gewassen. Geen enkele mate van beveiliging zal je redden wanneer de gebruikers hun apparaat onbeheerd achterlaten.
Helaas is dat niet altijd het geval. En komen we er pas achter wanneer het kwaad al geschied is. Nu is nog nooit iets extreems gebeurd ofzo.. Maar ik kan me vanalles bedenken :s
Gewijzigd op 10/03/2018 13:19:30 door Jasper Schellekens
Dat kan je beter in een ander topic plaatsen.
Is prima.