Session en Date()

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jasper Schellekens

Jasper Schellekens

08/03/2018 21:09:40
Quote Anchor link
Hallo,
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
date('d/m/Y h:i:s', time());


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 ?
 
PHP hulp

PHP hulp

24/11/2024 08:11:10
 
Aad B

Aad B

08/03/2018 21:20:15
Quote Anchor link
Je formaat ('d/m/Y h:i:s') wat aanpassen, H ipv h zie http://php.net/manual/en/function.date.php
Gewijzigd op 08/03/2018 21:22:00 door Aad B
 
- Ariën  -
Beheerder

- Ariën -

08/03/2018 21:24:08
Quote Anchor link
Persoonlijk zou ik strftime aanraden. Let er dan wel op dat de notatie dan anders is.

Quote:
To format dates in other languages, you should use the setlocale() and strftime() functions instead of date().
 
Jasper Schellekens

Jasper Schellekens

08/03/2018 21:37:15
Quote Anchor link
Dank jullie,
Ik hou het even bij date().

En hoe kan ik na bepaalde tijd die sessie destroyen?
 
- Ariën  -
Beheerder

- Ariën -

08/03/2018 21:40:08
Quote Anchor link
session.cookie_lifetime

met deze setting (kan je uitvoeren in ini_set bijv.) kan je de leeftijd van een session-cookie bepalen in seconden.
 
Thomas van den Heuvel

Thomas van den Heuvel

08/03/2018 21:49:00
Quote Anchor link
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.
 
Rob Doemaarwat

Rob Doemaarwat

08/03/2018 22:13:19
Quote Anchor link
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.
 
Jasper Schellekens

Jasper Schellekens

08/03/2018 22:15:58
Quote Anchor link
Bedankt, het is gelukt.


Hoe kan ik de sessie destroyen wanneer de site gesloten wordt?
 
- Ariën  -
Beheerder

- Ariën -

08/03/2018 23:02:24
Quote Anchor link
Schijnt dat dit zou moeten werken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
session_set_cookie_params(0);
session_start();
 
Thomas van den Heuvel

Thomas van den Heuvel

09/03/2018 02:50:55
Quote Anchor link
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? :/
 
Jasper Schellekens

Jasper Schellekens

09/03/2018 15:08:04
Quote Anchor link
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? :/


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
 
- Ariën  -
Beheerder

- Ariën -

09/03/2018 15:25:50
Quote Anchor link
Ik heb een idee dat deze beveiliging niet 100% veilig is. Bij het maken van een sessie wordt er standaard een cookie aangemaakt (mits je PHPSESSID in de URL gebruikt). Nu lijkt mij dat je aan de hand van XSS de cookie kan aanpassen zodat het geen session-cookie meer is, en dus langer actief zal blijven.

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 -
 
Thomas van den Heuvel

Thomas van den Heuvel

09/03/2018 16:13:16
Quote Anchor link
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.

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
 
Jasper Schellekens

Jasper Schellekens

10/03/2018 13:07:08
Quote Anchor link
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?).


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
 
- Ariën  -
Beheerder

- Ariën -

10/03/2018 13:14:05
Quote Anchor link
Dat kan je beter in een ander topic plaatsen.
 
Jasper Schellekens

Jasper Schellekens

10/03/2018 13:19:09
Quote Anchor link
Is prima.
 



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.