Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Błąd spowodowany przez cookie
Forum PHP.pl > Forum > Przedszkole
rAlb
Witam,

Ponizszy kod to licznik odwiedzin stron oparty na pliku tekstowym i pliku cookie.

  1. <?php
  2. $liczbaOdwiedzin = file_get_contents("licznik.txt");
  3. if(!isset($_COOKIE['visited']))
  4. {
  5. setcookie('visited', 1, time()+1800);
  6. $liczbaOdwiedzin++;
  7. $fileHandler=fopen("licznik.txt", "w");
  8. fputs($fileHandler, $liczbaOdwiedzin);
  9. fclose($fileHandler);
  10. }
  11. echo $liczbaOdwiedzin;
  12. ?>


I w stronie index.php jest:

  1. <?php include("licznik.php"); ?>


Niestety czasami (nie zawsze) pojawia się błąd "Cannot modify header information - headers already sent" i nie wiem:
- czemu tak sie dzieje
- i co zrobic zeby bylo OK.

Pozdrawiam.
wNogachSpisz
setcookie() wymaga wysłania nagłowka HTTP
co za tym idzie kod ten musi być wykonany na samym początku skryptu, zanim rozpoczenie się przesyłanie BODY.
I nie, nie mam na myśli znacznika HTML:BODY
Tylko BODY jako treść dokumentu, to co następuje po nagłowkach HTTP.

Umieść include na samym początku skryptu.
rAlb
Czyli, że mam umieścić include do licznik.php na samym początku index.php. No dobra, ale to muszę wywalic z niego instrukcję echo, bo nie chce żeby gdzieś u góry wyświetlał mi licznik użytkowników i gdzieś dalej w kodzie, gdzie chce żeby ten licznik się wyświetlił muszę dodać <?php echo $licznikOdwiedzin; ?>. Ale niestety tak jak się obawiałem, to nie zadziałało. Jak rozwiązać problem?
jaslanin
Skąd wziąłeś zmienną: $licznikOdwiedzin

Wcześniej podajesz zmienną: $liczbaOdwiedzin;

Więc chyba kod powinien wyglądać tak:

  1. <?php echo $liczbaOdwiedzin; ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.