Avatar billede bentblod Nybegynder
10. december 2005 - 13:26 Der 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;
}


Nogen der kan se hvad problemet er??
Avatar billede dimsushi Nybegynder
10. december 2005 - 13:27 #1
Så vidt jeg ved skal cookies sættes før der skrives output til browseren. Det skal op i toppen af din side.
Avatar billede bentblod Nybegynder
10. december 2005 - 13:28 #2
hmm ok tester lige så :)
Avatar billede bentblod Nybegynder
10. december 2005 - 13:30 #3
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 :)
Avatar billede dimsushi Nybegynder
10. december 2005 - 13:58 #4
Det var godt det kom til at virke.
Avatar billede bentblod Nybegynder
10. december 2005 - 14:06 #5
Skriv lige som svar :)
Avatar billede johan.o Nybegynder
10. december 2005 - 14:23 #6
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.

Mvh. Johan
Avatar billede johan.o Nybegynder
10. december 2005 - 14:27 #7
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.

Mvh. Johan
Avatar billede dimsushi Nybegynder
10. december 2005 - 14:27 #8
Har ikke helt forstået ideen med det her point system. Det her er skrevet som svar nu. Kan nogen måske forklare mig hvordan det virker? :)
Avatar billede johan.o Nybegynder
10. december 2005 - 14:36 #9
Å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 :)

Mvh. Johan - og tak :)
Avatar billede bentblod Nybegynder
17. december 2005 - 13:23 #10
Tak for hjælpen :) Har accepteret svaret nu ^^
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