Ik wil een cookie zetten dat blijft bestaan gedurende een door de gebruiker opgegeven tijd. Dit kan varieren van +1s tot +10y of zo, de gebruiker kan aangeven welke (tijds)eenheid en hoeveel eenheden de levensduur van het cookie moet zijn. Het doel is natuurlijk om een persistent session te maken.
Cookie setten is het probleem niet, gewoon zeggen dat het cookie over "+7d" verloopt, de browser rekent wel uit wanneer het cookie weg mag en geeft het cookie niet meer door na die tijd. Maar omdat je nooit moet vertrouwen op wat de browser je verteld wil ik in perl, serverside uitrekenen (en opslaan) wanneer het cookie moet verlopen.
Nou zijn de standaard datum/tijd-functies van perl (Time.pm) niet zo handig. je kunt niet even x dagen optellen bij de day-value en dan de seconden opvragen met timelocal.
Uitrekenen wanneer het 31 dagen later is door 31 op te tellen bij de dag-waarde:
timelocal(59,59,23,18+31,12,2003) werkt niet omdat je dan een "out of range 1..31" krijgt voor de 18+31.
Het zou erg makkelijk zijn als het wel zou werken
Ander uiterste is om zelf rekening te houden met variabelen die over hun maximum gaan. Dat is voor uren minuten en seconden nog wel te doen, maar bij dagen moet je al rekening gaan houden met hoeveel dagen er in een maand zitten en dus ook met schrikkeljaren. Ik moet bijna een halve kalender gaan maken
Het levert een erg ontsierend rijtje while-loopjes op
Ik kan me niet voorstellen dat dat niet makkelijker kan en/of niemand daar al eens iets voor gemaakt heeft. Elke browser rekent die datum uit, serverside, in perl, moet dat toch ook eenvoudig kunnen? Ik ben vast niet de eerste die wil uitrekenen wanneer de "+31d" van een cookie-lifetime is.
Cookie setten is het probleem niet, gewoon zeggen dat het cookie over "+7d" verloopt, de browser rekent wel uit wanneer het cookie weg mag en geeft het cookie niet meer door na die tijd. Maar omdat je nooit moet vertrouwen op wat de browser je verteld wil ik in perl, serverside uitrekenen (en opslaan) wanneer het cookie moet verlopen.
Nou zijn de standaard datum/tijd-functies van perl (Time.pm) niet zo handig. je kunt niet even x dagen optellen bij de day-value en dan de seconden opvragen met timelocal.
Uitrekenen wanneer het 31 dagen later is door 31 op te tellen bij de dag-waarde:
timelocal(59,59,23,18+31,12,2003) werkt niet omdat je dan een "out of range 1..31" krijgt voor de 18+31.
Het zou erg makkelijk zijn als het wel zou werken
Ander uiterste is om zelf rekening te houden met variabelen die over hun maximum gaan. Dat is voor uren minuten en seconden nog wel te doen, maar bij dagen moet je al rekening gaan houden met hoeveel dagen er in een maand zitten en dus ook met schrikkeljaren. Ik moet bijna een halve kalender gaan maken
Ik kan me niet voorstellen dat dat niet makkelijker kan en/of niemand daar al eens iets voor gemaakt heeft. Elke browser rekent die datum uit, serverside, in perl, moet dat toch ook eenvoudig kunnen? Ik ben vast niet de eerste die wil uitrekenen wanneer de "+31d" van een cookie-lifetime is.
[ Voor 41% gewijzigd door RolandWitvoet op 18-12-2003 02:15 ]
NE2000 3-9 augustus, Elburg Open-air lan-party, 5 jaar alweer! Computers, kamperen, kampvuur, activiteiten, schier-eiland, dropping, tap-eiland, lezingen, workshops, bands, gezelligheid. NE2000, de andere Lanparty