set cookie på dynamisk php side?

Tags:    php

<< < 123 > >>
Hej, sidder og har et lille problem som jeg ikke kan løse.

Jeg har en side, hvor der er undersider som har dynamisk URL.
example.dk/id=1 osv.

Når jeg så sætter en cookie, sætter den til hele siden, hvordan gør jeg det, så det kun er denne specifikke side de er på.

Grunden er at folk kan stemme på siden, og dette gør jeg ved hjælp at cookie..

Mange tak..

Andreas



21 svar postet i denne tråd vises herunder
5 indlæg har modtaget i alt 20 karma
Sorter efter stemmer Sorter efter dato
Det kan du ikke. Men du kan jo lave så mange cookies du vil. Så du kan jo bare lave en for hver side man kan stemme på. Eller gemme en liste over sider folk har stemt på.



I IE kan du som minimum lave 300 cookies som hver må fylde 4096 bytes dvs. 1,2MB, men for hver host max 50 cookies som jeg har forstået det...

Læs:
http://support.microsoft.com/kb/306070
og
http://support.microsoft.com/kb/941495/da

Hvad de andre browsere tillader er sikkert det samme som IE da de sikkert følger RFC 2109, men er dog ikke sikkert de følger samme norm..


Derfor jeg ville vælge min løsning, min løsning gør også at du kan holde mere styr på din afstemnings data...


Databasen kunne se således ud:

TABEL: cookieUsers
ID // primær nøgle
cookieName //Navnet på cookien som bliver navnsat i applikationen

Andet data kunne også puttes ind her hvis det ønskes..


TABEL: votes
ID // primær nøgle
cookieUserID // Henviser til ID i tabellen cookieUsers
answerID // Svaret brugeren har givet som hentes fra answers eller hvad din tabel nu hedder


Resten er nu bare at lave i applikationen





Indlæg senest redigeret d. 22.05.2011 20:00 af Bruger #7728
Det kan du ikke. Men du kan jo lave så mange cookies du vil. Så du kan jo bare lave en for hver side man kan stemme på. Eller gemme en liste over sider folk har stemt på.


Hmm, nu må du ikke skyde mig ned hvis det er helt ved siden af, men jeg synes at have læst noget om at der rent faktisk er en begrænsning for hvor mange cookies man kan lave til én specifik bruger.. At det så vist nok afhænger af brugerens system er så noget andet :-)
Jeg har selv arbejdet på en side med en masse afstemninger, hvor jeg lavede én cookie pr. person og lavede noget JSON/array kodning så jeg kunne finde ud af hvilke afstemninger folk havde stemt i og hvad de havde stemt ;-)



Man skal dog være opmærksom på hvor meget data der skal gemmes i cookien, om den når et max niveau på et tidspunkt..

Så vil jeg klart anbefale mit forslag med at lave en unik cookie for hver bruger og så hente dataen fra en database..



Alternativt kan du lave en kombination. en eller anden skrev noget med et "password" til hver person - du kunne jo eventuelt gemme en unik hash af en art i en cookie til personen. Denne hash kan så være reference til databasen hvori du kan gemme forskellige data om hvad der er stemt på :-)

På den måde skal din cookie altså kun holde en (hvis det er MD5) 16-byte streng du så kan finde data i databasen ud fra ;-)



Altså du kunne vel gøre det at du bruger en if, så cookien kun findes frem på de sider du skal bruge den... Eller er jeg helt forkert på den? :bounce:



Som Jonas skriver kan du ikke lave en cookie specialt til hver side..

Jeg ville nok lave en unik cookie for brugeren og så gemme resultatet af afstemningen i en database.

Men det kommer jo igen an på hvad du skal bruge det til, for mener bestemt at max størrelsen på en cookie er 4kb (Jeg er dog ikke 100% sikker)...

Skriv lidt mere om projektet så kan vi hjælpe dig mere på vej..



Indlæg senest redigeret d. 22.05.2011 12:31 af Bruger #7728
Jeg ville forslå at du benytter dig af $_SESSION istedet for Cookie, da jeg personligt syntes at det er meget nemmere at håndtere. Det kan godt være at Cookie's kører i længere tid på hjemmesiden da den gemmer dine Cookie's på computeren, men jeg syntes stadig at du skal benytte dig af $_SESSION funktionen. Det er bare min personlige holdning :).



Daniele men så er alle de gemte resultater jo slettet når brugeren vender tilbage til siden, hvis disse forsat skulle være gemt kræver det jo at man laver et "bruger system"..




Indlæg senest redigeret d. 22.05.2011 12:45 af Bruger #7728
#zynzz

Ja så skal du have et brugersystem, hvilket jeg syntes er bedre, og så kan du også gøre det igennem databasen. Hvorfor ikke lave det sådan? Det er nemt :).



<< < 123 > >>
t