Avatar billede yoka Nybegynder
23. maj 2007 - 18:16 Der er 5 kommentarer

Cookie bliver ikke sat?

Hej jeg er ved at lave en lille hitcounter til min side. Den er til at vise hvor mange gange en bestemt mp3 er blevet afspillet. og for at ungdgå at counteren løber får hver  mp3 får sin egen cookie der varer en time. Men cookie bliver ikke sat?!?!

koden:
// Hvis cookien ikke er sat (og sangen derfor ikke er hørt indenfor en time, skal der sættes en. Og counteren i Mysql databasen skal updates )
if (empty($_COOKIE[$trackname])) {
       
        // her queryes databasen bare
mysql_connect("localhost:3306", "xxxx", "xxxx") or die(mysql_error());
mysql_select_db("xxxx") or die(mysql_error());
mysql_query("UPDATE tracks SET space=($count + 1) WHERE original='$track'");


// denne cookie bliver ikke sat? er det noget med syntaksen?
setcookie ($trackname, $count, time() + (60*60));
 
  }

På forhånd tak
Avatar billede showsource Seniormester
23. maj 2007 - 20:16 #1
2-3+... ting,
Hvor kommer
$trackname, $count
fra?

Og en go' ting med setcookie, er altid at sætte path på,

setcookie ($trackname, $count, (time()+(60*60)), "/"); // "/" er roden af domain

samt bruge isset()
if (!isset($_COOKIE[$trackname])) {
Avatar billede yoka Nybegynder
23. maj 2007 - 20:29 #2
Ok her er hele koden med engelske comments:

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

//------------------------------------------------------------------- query the database to get curret hitcount number (in the space column )
  $con = mysql_connect("localhost:3306","rooxt","rooxt");

mysql_select_db("xxxx", $con);

$query = mysql_query(" SELECT * FROM tracks WHERE original='$track'");
$row = mysql_fetch_assoc($query);

$count = $row['space'];
//------------------------------------------------------------------- if there is no cookie set for this track: set one and add a count to the hitcounter

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=($count + 1) WHERE original='$track'");
setcookie ($cookie,'ligegyldig text', time() + (60*60));
 
  }



Nu bliver cookien sat men bliver ikke fundet næste gang scriptet køres. dvs. at hitcounteren bare kører derudaf hvis man reloader hele tiden. Hvorfor finder den ikke cookien så IF'en ikke køres?
Avatar billede showsource Seniormester
23. maj 2007 - 20:37 #3
jævnt skidt kode, og jeg er ikke lige til at ændre, men f.eks.
mysql_query("UPDATE tracks SET space=($count + 1) WHERE original='$track'");
kan li' så godt være
mysql_query("UPDATE tracks SET space=(space+1) WHERE original='". $track ."'");

Og skal se champions league! :O)
Avatar billede yoka Nybegynder
24. maj 2007 - 00:13 #4
okay okay... det kan jeg godt se. Jeg begyndte på PHP i sidste uge... så jo jeg er skidt :). hmm...
Avatar billede showsource Seniormester
24. maj 2007 - 07:23 #5
Det var nu også mig som fik udtrykt mig forkert, ( igen ), så skidt er det nu heller ikke!

Men brug gerne isset() til at tjekke om en variabel er sat.
Og som min. mysql_real_escape_string() i en query baseret på brugerinput,
http://dk.php.net/mysql_real_escape_string

Du skriver cookien bliver sat, men kan ikke finde den næste gang ved hit?

setcookie($cookie,"ligegyldig text",(time()+(60*60)), "/");
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