Autor Zpráva
marinta
Profil *
Ahoj
mám

   $cookie = "site_$id"; 
   if(isset($_COOKIE[$cookie])) { 
   echo "<p>Omlouváme se, ale již jste hlasoval.</p>"; 
   } 
   else{ 
//  $expire = time()+60*60*24*30;
   setcookie($cookie);     
   mysql_query ("UPDATE table SET ratings = hlasovani+$hlasovani, hlasy = hlasy+1 WHERE id = $id") or die(mysql_error()); 
   echo "<p>Váš hlas byl úspěšně zaznamenán</p>"; 
   }

Ale vůbec to na to cookie nereaguje a hlasovat se může pořád. V prohlížeči je uložená.
DJ Miky
Profil
Funkce setcookie() má více parametrů, v tomto případě bys měl nastavovat ještě hodnotu (druhý parametr) třeba na "1" a čas expirace (třetí parametr) na nějaký čas v budoucnosti, třeba měsíc, jako máš v zakomentované proměnné $expire.
marinta
Profil *
Tak jsem tam přidal

   $expire = time()+60*60*24*30;
   setcookie($cookie, $id, $expire);      

a je to pořád stejné. Hlasovat se může pořád.
Borius
Profil
marinta:
Ale vůbec to na to cookie nereaguje a hlasovat se může pořád. V prohlížeči je uložená.
Ten kód je napsaný správně a je funkční. Hledal bych chybu někde úplně jinde. ;-)
Třeba, co mě napadá – nemění se pokaždé hodnota proměnné ‘$id’?

DJ Miky:
Funkce setcookie() má více parametrů
Povinný parametr je pouze název, ostatní jsou nepovinné.
marinta
Profil *
Opraveno, díky.

Borius: chyba tam sice nebyla, ale jak jsem právě zjistil, některé prohlížeče mají problém s podtržítkem v názvu cookie. Takže stačilo odstranit podtržítko.

ufff

díky :D


Jinak problémy s podtržítkem v názvu cookie má podle googlu IE_7 a podle mé nynější zkušenosti i firefox v xubuntu s tím má problémy.

To jen tak mimochodem pro další generace. :)
DJ Miky
Profil
Povinný parametr je pouze název, ostatní jsou nepovinné.

Ano, ale v tomto případě se více než hodí nastavit alespoň platnost, jinak se po zavření prohlížeče cookie ztratí.
Borius
Profil
DJ Miky:
Ano, ale v tomto případě se více než hodí nastavit alespoň platnost, jinak se po zavření prohlížeče cookie ztratí.
Máš pavdu, určitě. :-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0