Avatar billede yoka Nybegynder
08. juni 2007 - 17:59 Der er 6 kommentarer

Cookie problemer med playcounter

Hej, jeg har nu "siddet fast" i kodet til min musikside i nogen tid. Siden er til mig og min vens musik. Når man hører et nummer skal der addes +1 til playcounteren, men ikke hvis "lytteren" har lyttet inden for en time. Ret simpelt.

Men nu har jeg både prøvet med cookies og sessions. Jeg henter musikennummerets navn og sætter endelsenn "_pcount" på ... så en cookie bliver sat til at hedde: "sangnavn.mp3_pcount", når en sang bliver hørt. Jeg tjecker i koden med

if (empty($_COOKIE['$cookie']))

Om cookien er sat, og hvis den ér, skal der selvfølgelig ikke addes +1 til playcounteren. problemet er bare at selvom cookien er sat (det tjecker jeg nemlig), så adder den alligevel?

nogle i ideer til hvad der er galt?

Jeg har ikke haft problemer med at lave andre countere selv som ikke havde et "dynamisk" cookie navn, og det virker da også når ikke der er en variabel i cookiens navn.. det virker meget underligt....

cookie sætter koden:
// $cookie indeholder sangnavn_mp3_pcount
if (empty($_COOKIE['$cookie'])) {
       
mysql_connect("localhost:3306", "root", "root") or die(mysql_error());
mysql_select_db("padb") or die(mysql_error());
mysql_query("UPDATE tracks SET space=(space + 1) WHERE original='$track'");
setcookie($cookie,"ligegyldigtext",(time()+(60*60)), "/");
  }
Avatar billede yoka Nybegynder
08. juni 2007 - 18:02 #1
lige for at præcisere: "space" er en kollone i MySql databasen der indeholder playcounten...
Avatar billede intenz Novice
08. juni 2007 - 18:17 #2
Kan ikke lige se hvorfor det ikke skal virke, men prøv i stedet:
if (!isset($_COOKIE[$cookie]))
Avatar billede yoka Nybegynder
08. juni 2007 - 20:04 #3
Jeg har ændret empty() til isset(), her er koden.. meget simpel.. men ikke fungerende
grunden til at jeg fjerner mellemrum fra sangens navn er fordi jeg troede/tror at det kan være en fejlfaktor for at cookien bliver sat.

:

//------------------------------------------------------------------- get the querystring with the track name in it and remove space from stri
$track = $_GET['track'] ;
$cookie = $track."_pcount";
$cookie = str_replace(" ","", $cookie);



//------------------------------------------------------------------- if there is no cookie set for this track: set one and add a count to the hitcounter

if (isset($_COOKIE['$cookie'])) {
       
       

  } else { 
 
  mysql_connect("localhost:3306", "root", "root") or die(mysql_error());
mysql_select_db("padb") or die(mysql_error());
mysql_query("UPDATE tracks SET space=(space + 1) WHERE original='$track'");
setcookie($cookie,"ligegyldigtext",(time()+(60*60)), "/");
 
 
  }


cookien bliver altså sat, men scriptet ignorerer den og adder alligevel ved næste lytning???
Avatar billede intenz Novice
08. juni 2007 - 20:24 #4
Du skal gøre det uden ''. Altså sådan her:
if (isset($_COOKIE[$cookie])) {

Gør du det med '' spørger du om en cookie ved navn $cookie er sat. Gør du det uden spørger du om en cookie, der hedder hvad indholdet af $cookie er (sangnavn.mp3_pcount), er sat.
Avatar billede yoka Nybegynder
08. juni 2007 - 20:31 #5
Det har jeg rettet nu. Men den bliver ved med at adde stadigvæk?!
Avatar billede showsource Seniormester
09. juni 2007 - 13:41 #6
måske
$track = url_decode($_GET['track']);

Og kan du undgå mellemrum m.m. i din url, altså kun bruge 0-9 og a-z, er du sikker på at undgå "problemer"
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