/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
cookies og arrays
Fra : Frank Nørvig


Dato : 27-12-01 14:07

Hejsa

Jeg har lavet en hjemmeside med 3-4 felter hvor folk kan stemme. Hver
"stemmeboks" har et unikt nummer.

Jeg vil gerne gøre sådan at hver person kun kan stemme én gang pr.
stemmeboks pr. time. Jeg havde forestillet mig at oprette en cookie som
udløber efter en time, som indeholder et array med de stemmeboks-numre man
allerede har stemt i. Men efter flere timers forsøg med både Cookies og
Arrays i PHP, må jeg råbe om hjælp.

Hvordan opretter man en cookie med et array i, og efterfølgende tilføjer til
array'et, hvis der stemmes i en ny boks, og den ikke er expired?

Mvh Frank



 
 
Thor Dreier (27-12-2001)
Kommentar
Fra : Thor Dreier


Dato : 27-12-01 14:29

"Frank Nørvig" <frank.norvig@dk.wilsonlog.com> wrote in message
news:j5FW7.47$6o1.1931@news.get2net.dk...
> Hvordan opretter man en cookie med et array i, og efterfølgende tilføjer
til
> array'et, hvis der stemmes i en ny boks, og den ikke er expired?

Hvis du vil lægge et array i en cookie skal du kigge på
http://dk.php.net/manual/en/function.serialize.php

Men mon ikke det er smartere at lægge hver unikke nummer i en cookie for sig
selv. Noget i denne retning kunne gøre det:

/*pseudo-kode*/
$stemmeid = 1234 // unikt nummer for en stemmeboks
if(isset($HTTP_COOKIE_VARS["stemmeid"][$stemmeid]))
{
// der er allerede stemt
}
else
{
// der er ikke stemt inden for den sidste time
// og der sættes en cookie så man kan se at der er stemt
setcookie("stemmeid[$stemmeid]", "something", time()+3600);
}


--
http://dreier.info/
Wheee - nu har jeg et info-domæne
(ikke at jeg har noget at bruge det til)



Frank Nørvig (27-12-2001)
Kommentar
Fra : Frank Nørvig


Dato : 27-12-01 14:37

> Men mon ikke det er smartere at lægge hver unikke nummer i en cookie for
sig
> selv. Noget i denne retning kunne gøre det:
> /*pseudo-kode*/
> $stemmeid = 1234 // unikt nummer for en stemmeboks
> if(isset($HTTP_COOKIE_VARS["stemmeid"][$stemmeid]))
> {
> // der er allerede stemt
> }
> else
> {
> // der er ikke stemt inden for den sidste time
> // og der sættes en cookie så man kan se at der er stemt
> setcookie("stemmeid[$stemmeid]", "something", time()+3600);
> }

Udemærket idé, men virker ikke helt efter hensigten. Den returnerer "Illegal
offset type"

Når der stemmes, får $stemid ID-værdien for den stemmeboks man har klikket
i. Derfor har jeg skrevet:
if ($stemid)
{
if (!isset($HTTP_COOKIE_VARS["stemid"][$stemid]))
{
setcookie("stemid[$stemid]", "stemt", time()+3600);
}
}

Mvh Frank



Frank Nørvig (27-12-2001)
Kommentar
Fra : Frank Nørvig


Dato : 27-12-01 15:34

> Udemærket idé, men virker ikke helt efter hensigten. Den returnerer
"Illegal
> offset type"

Fik det til at virke, men nu har jeg et andet problem:
Jeg gør følgende:
if ($stemid)
{
if (!isset($HTTP_COOKIE_VARS["stemme"][$stemid]))
{
setcookie("stemme[$stemid]", "stemt", time()+60);
}
}

Det skulle gerne lave en cookie som udløber efter 60 sekunder. Problemet er
bare at den tilsyneladende aldrig udløber. Ovenstående cookie kan aflæses
uanset om den skulle være udløbet eller ej. Jeg bruger
"isset($HTTP_COOKIE_VARS["stemme"][$stemid])" til at finde ud af om den
eksisterer.

Hvad gør jeg galt?

Mvh Frank



Thor Dreier (27-12-2001)
Kommentar
Fra : Thor Dreier


Dato : 27-12-01 16:11

"Frank Nørvig" <frank.norvig@dk.wilsonlog.com> wrote in message
news:6nGW7.68$6o1.2487@news.get2net.dk...
> Det skulle gerne lave en cookie som udløber efter 60 sekunder. Problemet
er
> bare at den tilsyneladende aldrig udløber. Ovenstående cookie kan aflæses
> uanset om den skulle være udløbet eller ej. Jeg bruger
> "isset($HTTP_COOKIE_VARS["stemme"][$stemid])" til at finde ud af om den
> eksisterer.

Problemet kan være at uret på serveren og klienten ikke går ens. Du kan evt.
lave noget i retningen af:

if ($stemid)
{
if (isset($HTTP_COOKIE_VARS["stemme"][$stemid]) &&
$HTTP_COOKIE_VARS["stemme"][$stemid]>time()-60)
{
// der er stemt inden for de sidste 60 sek.
}
{
// der er IKKE stemt inden for de sidste 60 sek
setcookie("stemmeid[$stemmeid]", time(), 2147483600);
}
}


--
http://dreier.info/
Wheee - nu har jeg et info-domæne
(ikke at jeg har noget at bruge det til)



Frank Nørvig (28-12-2001)
Kommentar
Fra : Frank Nørvig


Dato : 28-12-01 08:43

> Problemet kan være at uret på serveren og klienten ikke går ens. Du kan
evt.
> lave noget i retningen af:

Alle tiders, det var præcis dét der var problemet. Mange tak!

- Frank



Søg
Reklame
Statistik
Spørgsmål : 177522
Tips : 31968
Nyheder : 719565
Indlæg : 6408670
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste