07. juni 2003 - 14:17Der er
21 kommentarer og 2 løsninger
Udskrive cookie tid
Ved ikke lige hvad man kalder det her, så titlen er lidt tynd.. Nå men hvordan kan man få php til at skrive tiden der er i en cookie hvis det kan lade sig gøre?
F.eks. hvis jeg har lavet en cookie der skal holde en time, så vil jeg gerne ha php til at skrive den resterende tid som cookien gælder i (f.eks. hvis der er gået 10 minutter, så skal den skrive "50 minutter tilbage" eller sådan noget).
Serveren kan ikke se en cookies udløbstid. Du kan som alternativ selv holde styr på hvad du har sat som udløbstid, men hver opmærksom på at serverens ur ikke nødvendigvis viser det samme som klientens ur.
du kan godt lave den funktion vil jeg regne med... sammen med den cookie du gemmer skal du gemme en der fx hedder time og deri putter time()+3600 i, så kan du hive cookien time ud og minus indholdet med time() derved får du hvormange sekunder der er tilbage!
Det er det, jeg vil kalde "selv holde styr på hvad du har sat som udløbstid", men uden at være opmærksom på at både serverens og klientens ur ikke nødvendigvis passer. Der er overraskende mange ure der er flere dage forkerte...
myplacedk -> Hvad gør det at brugerens ur ikke går lige som serverens?? Hvis du gemmer et tal (behøver jo ikke nødvendigvis være et klokkeslæt) først, og derefter henter tallet ud og tester op mod serverens ur, burde det da næppe gøre noget hvad klokken er på brugeres maskine.. eller det ved jeg det er, hvis du bare laver det rigtigt..
Kan godt være cookien bliver slettet efter brugerens computerur.. men man kan saktens teste på et tal der ligger i en cookie.. Det bliver ikke lavet om, før du selv gør det..
nicklasb > Eksempel: Serverens ur paser, klientens er 10 minutter foran. Serveren sætter en cookie med udløbstid "om en time". Det bliver hos klienten til "om 50 minutter". Serveren sætter en cokkie med et timestamt for "om en time". 49 minutter senere siger serveren "Du har nu 11 minutter tilbage". Ét minut senere forsvinder cookien.
Tidviseren er der med falsk information, og det ville være bedre at undvære den.
elskermad.dk >> Jeg ved ikke lige hvad du spørger om, men jeg kan da fortælle dig noget jeg ER sikker på. ;-) Når serveren sender en cookie til klienten er det ikke en relativ tid (som fx. "om en time"), det er et præcist klokkeslet med dato og det hele. Man kan omgå dette ved, i stedet for en cookie, at sende et javascript. Dette script beregnet udløbstidspunktet og sætter cookien, ligesom serveren ellers ville gøre. Men da det sker på klienten, vil tiden passe. Men så er man afhængig af javascript...
Du kan fx. skrive i cookien hvor den skal udløbe ifølge serverens ur, men sætte selve cookien med javascript. Hvis klientens ur ikke ændres i forhold til serverens ur, skulle udløbstiden i cookien passe i forhold til serverens ur. Men så er du nok nødt til at lave et alternativ til dem, der ikke kører javascript...
En helt anden mulighed: Lad være med at styre det med en cookie. Du kan i stedet fx. gemme udløbstidpunktet i databasen, og i cookien gemmer du så et id fra databasen. Når tiden er gået kan du så slette cookien manuelt. Dette er vist sikkert mod underlige klienter.
andy> Det er klienten der sletter cookien når den mener det er tid. Din kode viser kun hvornår serveren tror det er. Der kan nemt være flere dage imellem.
ja, men jeg har jo netop sat udløbstid til time()+99999999.
Så kan du tjekke op på udløbstiden med mit ovenstående eksempel. fx: if ($data[0] + udloebstid - time() < 0) { setcookie("mincookie", "", time()-99999999); }
Det ville ellers være en fed feaure syns jeg .. Hvis der stod : Cookie udløber om 50 minutter.
Det er et stort admin system jeg er ved at lave, men jeg aner og fatter virkelig nix af javascript, så hvis det ikke kan undværes så må jeg bare springe det over
Well, jeg sætter altid cookies som i mit eksempel. Alt andet holder ikke netop pga den mulige tidsforskel som du påpeger. Det er utrolig nemt og utrolig effektivt.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.