10. december 2005 - 13:26Der er
9 kommentarer og 1 løsning
Cookie problemer
Hey får en fejlmeddelelse som jeg ikke lige kan finde ud af at finde frem til... har bare testet alt og virker rimelig mystisk, men nogen der har en forklaring på dette:
Warning: Cannot modify header information - headers already sent by (output started at /usr/home/web/web47875/beyond/index.php:24) in /usr/home/web/web47875/beyond/index.php on line 17
hvor line 17 er der hvor jeg sætter cookien.
metoden hvor jeg sætter cookien ser sådan her ud:
function taeller(){ $taeller = 0; $sql = "SELECT hits FROM counter WHERE id = '3'"; $result = mysql_query($sql); while ($myrow = mysql_fetch_row($result)) { $taeller = $myrow[0]; } if (isset($_COOKIE["counteren"])){ } else{ setcookie("counteren","10"); $taeller++; mysql_query("UPDATE counter SET hits='$taeller' WHERE id='3'") or die(mysql_error()); } return "Hits: " .$taeller; }
Ahh virkede sørme:) Bare underligt at den nogengange virkede, og ikke konsekvens sagde fejl. Men så er jeg da blevet det klogere hehe. Skriv lige som svar, og mange tak for hjælpen :)
dimsushi har hjulpet dig så stik 'ham' bare point, jeg vil bare komme med et ekstra råd :)
Grunden til 'fejlen' er ganske rigtigt som dimsushi siger, at der er skrevet output til browseren før du prøver at sætte cookien. Det kan du i fremtiden sikre dig mod hvis du istedet 'samler' alt dit output op i en streng, som du så først sender til sidst når dit php script er færdigt.
Hvis f.eks. du har en tabel med et eller andet indhold og du så vil skrive indholdet ud, så er der disse to måder, hvor jeg vil anbefale den sidste :) :
while($row=mysql_fetch_assoc($query)) { echo "<p>Indholdet er : ".$row['indhold']."</p>"; }
$output=""; while($row=mysql_fetch_assoc($query)) { $output.="<p>Indholdet er : ".$row['indhold']."</p>"; } echo $output;
Det er korrekt at det er en lille smule mere kode, men i de tilfælde hvor jeg har meget andet kode også, er det rart at jeg ikke behøver tænke over om der nu er sendt noget til browseren eller ej.
Og som du selv skriver så virkede det nogle gange og ikke andre, det hænger jo sikkert sammen med f.eks. en if sætning som hvis den er sand laver echo "noget" og hvis den er falsk ikke laver noget. Den slags er det jo 'træls' at man ikke lige var obs på da man lavede koden, men med ovenstående 'tip' behøver du heller ikke tænke på det, fordi du ved at der ikke sendes noget før til sidst. Der vil sikkert være situationer, kan ikke lige komme i tanke om hvornår, men der skal sikkert være nogle, hvor du ikke kan undgå at skulle sende noget med det samme, men det er stadig en god rettesnor.
Åh ja, point system..he he det håner min hustru mig meget med :) Det er såmænd meget enkelt. Når du spørger om et eller andet så sætter du et antal point på højkant som så tilfælder den, eller dem, som du mener har givet dig det bedste svar. Hvis du, som her, er den der har leveret svaret, ja så scorer du point.
Det er først muligt at give point til nogen, når de har lagt et svar som du lige har gjort, kommentarer kan man ikke give point. Når du så har lagt et svar, igen som her, kommer der en ekstra knap tilsyne hos spørgeren hvor han kan accepterer dit svar og vupti så har du fået point. Det er altsammen beskrevet i eksperten.dk's 'regelsæt for god opførsel', og det er da værd at nævne at det er god stil at takke for tildelte point, ligesom det er god stil at takke for ydet hjælp.
Så med en ca. ½ mill. spørgsmål, kan du nok se at der bliver takket en del :)
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.