Avatar billede claushelth Nybegynder
07. februar 2003 - 22:46 Der er 8 kommentarer og
1 løsning

setcookie() giver fejl

Jeg har fundet noget kode til en counter til min side, og vil gerne bruge det.

Jeg vil gerne ydnytte cookies for at gøre den lidt mere pålidelig.

Jeg vil først spørge om brugeren har min cookie, hvis ikke tælles der en op i min DB og der sættes en cookie som har en selvdestruerende funktion i sig (Sletter sig selv efter noget tid).

2 problemer:
- den får php-fejl
- den sætter aldrig en cookie

jeg får denne fejl:

Warning: Cannot modify header information - headers already sent by (output started at c:\apache\htdocs\index.php:2) in c:\apache\htdocs\inkl\bund.php on line 44

Jeg har fået fejlen før hvis jeg har brugt funktionen header() til at redirecte med.
Jeg bruger en hjælpefil til min DB som er inklideret med require(), denne tager sig af fejlbehandling med DB

her er kildekode til tæller:

<html>
<head>
<title>Test</title>
</head>
<body>
<br><br><br>
<?php
 

    echo "Test 1 <br>";

  require($_SERVER["DOCUMENT_ROOT"] . "/hj_funktioner/db_funktioner.php");

  // Opret forbindelse til MySQL og vælg database
  aabn_forbindelse_og_vaelgdb();

    echo "Test 2 <br>";

  //tjek om cookie eksiterer
  if (!isset($_COOKIE['countercookie']))
  {

    echo "Test 3 <br>";

      // Send MySQL sætning afsted for at finde ud af hvor mange
      // hits der er i tabellen
      $query = mysql_query("SELECT hits FROM counter");
      $row = mysql_fetch_array($query);

      // Put værdien i en variabel
      $hits = $row["hits"];


    echo "Test 4 <br>";

      // Opdater antallet med én
      $hits++;

    echo "Test 5 <br>";

      // Oppdater databasen med den nye værdi
      mysql_query("UPDATE counter SET hits = '$hits'");

      // Fortæl brugere hvad nummer han/hun er
      echo "$hits besøg ialt <br>";
 

    echo "Test 6 <br>";

      // Luk forbindelsen til MySQL
 
    luk_forbindelse();
    // smid en cookie
      setcookie("countercookie", "yes", time()+3600);

    echo "Test 7 <br>";

  }
  else
  { 
    echo "Test der var en cookie <br>";
  }
    echo "Test slut <br>";
?>


</body>
</html>

ps. den tæller op hver gang.
er det fordi apache skal sættes op til cookies?
jeg kan se i min php.ini at der ser ud som om at der her skal sættes noget op til cookie...er det her det går galt?
Avatar billede claushelth Nybegynder
07. februar 2003 - 22:49 #1
har selv fixet den...inden nogen svarer
Avatar billede claushelth Nybegynder
07. februar 2003 - 22:50 #2
det var i php.ini

Hvis der er nogle der er interesseret så var det her:

; Output buffering allows you to send header lines (including cookies) even
; after you send body content, at the price of slowing PHP's output layer a
; bit.  You can enable output buffering during runtime by calling the output
; buffering functions.  You can also enable output buffering for all files by
; setting this directive to On.  If you wish to limit the size of the buffer
; to a certain size - you can use a maximum number of bytes instead of 'On', as
; a value for this directive (e.g., output_buffering=4096).
output_buffering = on

Den var sat til off

hehe...hjælp til selvhjælp... ;-)
Avatar billede lauer Nybegynder
07. februar 2003 - 23:17 #3
Det er nu ikke den rigtige løsning.
Der er en grund til at den står på OFF som standard.

I stedet skal du gøre som den skriver i fejlen... lade vær med at udskrive noget ud på skærmen før du sætter en cookie... eller bruger en anden header-funktion.
Lige nu kører den alt tekst igennem først, for at tjekke om der er nogle funktioner den skal udføre, hvilket gør at dine sider vil blive langsommere.
Avatar billede claushelth Nybegynder
07. februar 2003 - 23:21 #4
ok...jeg starter da lige et nyt?

for skriver ikke ud inden cookie bliver sat, kun hvis DB får fejl, så skriver den fejlen ud, og det burde da ikke betyde noget?

Og hvilken funktion kunne jeg ellers bruge?
Avatar billede lauer Nybegynder
07. februar 2003 - 23:32 #5
nej, de behøver ikke at starte et nyt spørgsmål.

jo, du har f.eks. <html> tags, der må overhoved ikke komme noget ud til browseren... ikke engang et mellemrum før <?php

Det er den funktion, du skal bare lære at bygge din kode bedre op
Avatar billede claushelth Nybegynder
07. februar 2003 - 23:43 #6
ja...men dette var egentlig også kun en testside, for at se om det virkede.

Jeg har flyttet ?, nåede det inden da gav svar/kommentar...det ok

kig her:

http://www.eksperten.dk/spm/314802
Avatar billede claushelth Nybegynder
07. februar 2003 - 23:51 #7
machomann -> jeg er først lige begyndt at bygge min side op i php, og det kan godt være så alligevel at jeg ikke har helt fat i opbygningen, og det er derfor jeg får denne fejl. Selv om jeg kalder php-koden med en include, så får jeg samme fejl:

Warning: Cannot modify header information - headers already sent by (output started at c:\apache\htdocs\index.php:2) in c:\apache\htdocs\inkl\count.php on line 33

Det med den forsvindene cookie: startede en ny browser op, og det var ioredn igen.
Avatar billede claushelth Nybegynder
07. februar 2003 - 23:53 #8
Har i et sted hvor man får en god fornemmelse for hvorledes en side bygges fornuftigt op med php? Jeg tror det er der jeg brækker halsen.

Jeg syntes troede ellers selv jeg var ved at have styr på det http://www.chelth.dk , men jeg laver nok en grundliggende fejl et sted?
Avatar billede claushelth Nybegynder
07. februar 2003 - 23:54 #9
ups...nu er jeg træt skriver det forkerte sted...sorry
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