Simpel cookie!

Tags:    php cookies

Hey! Jeg har et PHP script der displayer billeder randomly når man reloader siden via. en knap.

Hvordan skal jeg lave en cookie der sørger for at jeg ikke kan se det samme billede før 24 timer senere?



6 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Hey! Jeg har et PHP script der displayer billeder randomly når man reloader siden via. en knap.

Hvordan skal jeg lave en cookie der sørger for at jeg ikke kan se det samme billede før 24 timer senere?


Ville det måske ikke være nemmere med en database?
Så skal du bare gemme brugerens IP i databasen, samt hvilket billede de har set?



Jeg vil absolut anbefale dig at benytte dig af en database.
Din host burde gerne tilbyde dig en MySQL server med tilhørende PHPMyAdmin-modul. Tilknyt hvert billede et id, lav en log med dato, billede id og IP på brugeren. Så tjekker du bare med noget i stil af
Fold kodeboks ind/udPHP kode 

Og så har du et resultset med billeder brugeren endnu ikke har set.. Der må så være en anden tabel hvor billederne er lidt mere oplagte;
Fold kodeboks ind/udKode 


Der fra kan du så hente et nyt billede ved at matche id'erne op, og så give brugeren et billede.

Du bør i hvert fald læse op på SQL, og få styr på database-håndtering, det er en kæmpe fordel i stedet for at skulle belaste brugeren med en masse cookies.

Når du kommer ind i alt det der har med databaser at gøre, vil det også hurtigt gå op for dig at det måske ville være smartere at lave et JOIN frem for den query jeg har skrevet længere oppe. Men nu bør vi lige holde det så simpelt som muligt, så du ikke står helt af.

Held og lykke



http://php.net/manual/en/function.setcookie.php
http://www.tizag.com/phpT/phpcookies.php
prøv at læse denne tut http://www.joe2torials.com/view_tutorial.php?view=66
vær opmærksom at din cookie code skal ligge før du skriver noget til skærmen.


husk at du jf EU lovgivning skal gører brugeren opmærksom på at du anvender cookie, og hvad du anvender dem til.
brugeren skal have mulighed for at afvise brugen af cookie.





Har ikke en database. Og ved ikke hvordan man gør dette. vil gerne holde det simpelt.



Hejsa

Vil give herrerne ovenover ret for det vil give dig enormt benefit, men hvis vi skal holde os til den løsning du vil have så vil jeg sige det er meget simpelt.

Hvert billede har et id, og i din cookie laver du et timestamp sammen med et id.
12;27-09-2012 13:41;32;27-09-2012 13:41;46;27-09-2012 13:41;9;27-09-2012 13:42;

Jeg er C# og .NET mand så ved ikke om du kan lave noget smart select ligesom LINQ, men ellers laver du en liste med timestamps og id'er og så skal du lave en random og sørge for den ikke rammer nogle af disse id'er før det er dagen efter.

Det er ikke den værste løsning, men må sige den kan gå hen og blive "tung" for brugeren.
En cookie sendes frem og tilbage imellem server og bruger for hvert request og hvert request vil give ham et id og timestamp mere i filen. Så denne filstørrelse vil vokse og vokse - dog stadig ikke meget da det er ren tekst i simpelt format, men stadig problematisk fordi du skal sende mere og mere over linien hver gang. Dette vil gøre din side langsommere og langsommere og dermed ikke brugervenlig.
Men det kan være en start.

Så i din php-fil:
1) Læser teksten fra cookie
2) Lav key-value liste (ved ikke hvad den hedder i PHP, men i C# er det Dictionary)
3) Split på ";" i et array eller liste
4) lav et for loop for arraylængde/2 (skal være lige tal ellers er der noget galt)
6) Tilføj id i key og timestamp (konveret til noget tids-type - Datetime eller lign) i value.
7) Lav et check for om dato er mere end 24 timer gammel, for så skal det ikke i listen
8) Når du kalder RandomImage-funktion til at give dig et random id indenfor et interval ser du på om din liste indeholder det id. Hvis den gør så prøv igen.
8) Skriv dit nyfundne id ind i listen, sammen med et nyt timestamp og konverter hele din liste til samme tekst og data-struktur som tidligere.
9) Lever siden med nyt billede og cookie igen.



Har ikke en database. Og ved ikke hvordan man gør dette. vil gerne holde det simpelt.


hvis du vil holde det simpelt, så opret en cookie med navnet på det billede du viser og sæt den til at udløbe om 24 timer.

næste gang du så vil vise et billede så check på om der findes en cookie med det navn inden du viser det.



t