Avatar billede slots_norton Nybegynder
07. juni 2003 - 14:17 Der 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).

Håber det er muligt..
Avatar billede myplacedk Nybegynder
07. juni 2003 - 14:24 #1
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.
Avatar billede myplacedk Nybegynder
07. juni 2003 - 14:24 #2
...og det var et svar. ;-)
Avatar billede elskermad.dk Nybegynder
07. juni 2003 - 15:18 #3
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!
Avatar billede elskermad.dk Nybegynder
07. juni 2003 - 15:19 #4
hvis du ikk lige selv kan sætte koden sammen eller ikke forstod hvad jeg skrev så ska jeg nok prøve!
Avatar billede myplacedk Nybegynder
07. juni 2003 - 15:21 #5
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...
Avatar billede nicklasb Nybegynder
07. juni 2003 - 15:41 #6
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..
Avatar billede myplacedk Nybegynder
07. juni 2003 - 16:48 #7
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.
Avatar billede elskermad.dk Nybegynder
07. juni 2003 - 17:53 #8
er i sikker på at cookien bliver sat serveren ur?
Avatar billede myplacedk Nybegynder
07. juni 2003 - 21:16 #9
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...
Avatar billede andy Nybegynder
10. juni 2003 - 11:08 #10
setcookie("mincookie", time() . "|mindata", time()+99999999);
$data = explode("|", $_COOKIE["mincookie"]);
echo "Cookie tid: $data[0]<br>Data: $data[1]";
Avatar billede slots_norton Nybegynder
12. juni 2003 - 21:33 #11
Så virker mit internet endelig igen !!!
Det lyder da lidt irreternde at man ikke kan det, men jeg havde mine anelser fordi php er jo server baseret ..

Men jeg tror da lige at jeg vil kigge på andys forslag og se om det kan gi mig et par ideer
Avatar billede myplacedk Nybegynder
12. juni 2003 - 21:46 #12
Andys forslag viser intet om hvor lang tid en cookie har tilbage, den viser hvornår cookien blev sat...
Avatar billede slots_norton Nybegynder
12. juni 2003 - 21:54 #13
Ja
Avatar billede andy Nybegynder
12. juni 2003 - 22:04 #14
$data = explode("|", $_COOKIE["mincookie"]);
$udloebstid = 3600;
echo "Cookie udløber om: " . $data[0] + udloebstid - time();
Avatar billede myplacedk Nybegynder
12. juni 2003 - 22:05 #15
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.
Avatar billede myplacedk Nybegynder
12. juni 2003 - 22:08 #16
andy> Det er stadig ikke mere præcist end synkroniseringen mellem serverens og klientens ur.
Avatar billede andy Nybegynder
12. juni 2003 - 22:17 #17
myplacedk> JO! Jeg bruger overhovedet ikke surferens ur. Kig på min kode igen.
Avatar billede myplacedk Nybegynder
12. juni 2003 - 22:24 #18
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.
Avatar billede andy Nybegynder
12. juni 2003 - 22:43 #19
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); }
Avatar billede slots_norton Nybegynder
12. juni 2003 - 22:46 #20
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
Avatar billede myplacedk Nybegynder
12. juni 2003 - 23:28 #21
andy > Ah, du tænkte også på at slette cookien manuelt. Det er altså ikke at "udløbe". :)

Resume: Man kan ikke se hvornår en cookie "dør", men man kan fjerne den manuelt, og SÅ har man styr på hvornår det sker.
Avatar billede myplacedk Nybegynder
12. juni 2003 - 23:30 #22
slots_norton > Hvis du bruger "anden mulighed" fra min kommentar 12/06-2003 22:05:05 slipper du for javascript, og får noget pålideligt.
Avatar billede andy Nybegynder
12. juni 2003 - 23:41 #23
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.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester