Avatar billede baitianlong Nybegynder
14. januar 2005 - 00:18 Der er 14 kommentarer og
1 løsning

Simpel cookie driller max

Jeg har lavet cookie 40 gange før, men jeg fatter ikke hvad der går galt her. Jeg bliver sindssyg:

if(!$_COOKIE['votehow']) {
    setcookie("votehow", "yes", time()+60*60*24*30);
    $vote = $_POST['how'];
    mysql_query("INSERT INTO votehow($vote) VALUES(1)");
}

Den går aldrig derind ?!?!?

Jeg har også prøvet med if(empty($_COOKIE['votehow'])) og if(!isset(...    -den er kold ?!
Avatar billede hmortensen Nybegynder
14. januar 2005 - 00:23 #1
Prøv at se om der er en cookie:
print_r($_COOKIE);
Avatar billede detox Nybegynder
14. januar 2005 - 00:24 #2
if(!isset($_COOKIE['votehow'])) {
    setcookie("votehow", "yes", time()+60*60*24*30);
    $vote = $_POST['how'];
    mysql_query("INSERT INTO votehow($vote) VALUES(1)");
}

burde virke.
Avatar billede baitianlong Nybegynder
14. januar 2005 - 00:28 #3
Jeg ved det burde virke, men det gør det ikke... Der står måske noget i cookien i forvejen, men man kan vel godt gemme i den flere gange, og jeg forespørger jo kun på "votehow"
Avatar billede baitianlong Nybegynder
14. januar 2005 - 00:29 #4
Jeg har prøvet at fjerne if-sætningen, og så skriver cookien fint.
Avatar billede hmortensen Nybegynder
14. januar 2005 - 00:30 #5
votehow er ikke værdi i cookien, men navnet på den.

slet din cookie først, og se om det hjælper.

unset($_COOKIE['votehow']);
Avatar billede baitianlong Nybegynder
14. januar 2005 - 00:33 #6
ja, men jeg sætter en anden cookie et andet sted (den hedder legendetime) og så denne her. Her kan i se indholdet af cookien, efter udkommentering af if-sætningen:

legendetime
1105651623
www.legende.dk/green/
1536
1145843072
29758618
2735849392
29686198
*
votehow
yes
www.legende.dk/green/
1536
2780245888
29692247
2967717248
29686212
*

Den indeholder både legendetime og votehow.
Avatar billede baitianlong Nybegynder
14. januar 2005 - 00:36 #7
...og derfor undrer det mig helt vildt at selv med denne cookie lagret, er den ligeglad med dette her:

if(!$_COOKIE['votehow']) {

og dette her:

if(!isset($_COOKIE['votehow'])) {

...kan nogen se en fornuftig grund til det ?! :)
Avatar billede detox Nybegynder
14. januar 2005 - 00:38 #8
Du kan ikke slette en cookie med:

unset($_COOKIE['votehow']);

Brug:

setcookie("votehow", "yes", time()-10);
Avatar billede hmortensen Nybegynder
14. januar 2005 - 00:39 #9
Ja, min fejl.

Og slet din cookie først, så virker det også.
Avatar billede baitianlong Nybegynder
14. januar 2005 - 00:39 #10
Det er da for syret. En print_r($_COOKIE) giver:

Array ( [legendetime] => 1105659267 [votehow] => yes )
Avatar billede hmortensen Nybegynder
14. januar 2005 - 00:43 #11
Det her er et godt debug værktøj:
<pre>
<?php
print_r($array);
?>
</pre>

Pre laver en let-læselig opstilling.
Avatar billede baitianlong Nybegynder
14. januar 2005 - 00:50 #12
Sorry... Det er mig der er en spade. Det har virket hele tiden, det var fordi den skulle vise resultater, hvis man allerede havde stemt tidligere, men lidt højere oppe siger jeg

if(!empty($_POST['how'])) {
  skriv i database hvis cookie er tom
  skriv i cookie
  vis resultater.

Det skulle jo lige være:

if(!empty($_POST['how']) || isset($_COOKIE['votehow'])) {
  skriv i database hvis cookie er tom
  skriv i cookie
  vis resultater.

-Vi i ha points, så svar :) Beklager idiotien her
Avatar billede detox Nybegynder
14. januar 2005 - 00:52 #13
Nevermind, kl. er mange ;O)
Avatar billede hmortensen Nybegynder
14. januar 2005 - 00:56 #14
Behold du bare for min skyld
Avatar billede baitianlong Nybegynder
14. januar 2005 - 01:07 #15
Mere Kaffe :)
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