Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: cookie
Forum PHP.pl > Forum > PHP
Majcon
No witam znowu ech przeszukalem kilka for i nie znalazłem odpowiedzi mianowicie napisałem licznik odwiedzin i nie wiem czemu nie działa ;D
  1. <?php
  2. $co = file_get_contents("bla.php");
  3. if($_COOKIE['czacikgg_licznik'] != 'licz'){
  4. $dodaj = $co+ 1;
  5. file_put_contents('bla.php', $dodaj);
  6. setcookie('czacikgg_licznik' , 'licz', time()+60*60*24);
  7. }
  8. echo "Odwiedzin: ".$co;
  9. ?>


A tu mi taki błąd wyskakuje

Warning: Cannot modify header
information - headers already sent by
(output started at /home/czacik/
domains/czacikgg.eu/public_html/
dd.php:1) in /home/czacik/domains/
czacikgg.eu/public_html/dd.php on
line 6
Odwiedzin: 6


i już Kurde nie mamo pomysłu
mstraczkowski
setcookie jest funkcją modyfikującą nagłówki musi zostać wywołana przed wyświetleniem czegokolwiek na ekran.
Majcon
Czyli że co tam źle?
mstraczkowski
Czyli, nic nie może zostać wyświetlone przed wywołaniem funkcji setcookie
Żaden HTML, żadne echo, żaden print, żaden printf, żaden błąd PHP wink.gif

  1. // Zle
  2. echo 'witam';


  1. // Dobrze
  2. echo 'witam';
Majcon
sobie poradziłem temat do zamknięcia brakowało !

Albo jednak nie działa co prawda nie ma błędu ale licznik nie nabija
Monter08
Dodaj ob_start na początek i w konstrukcji warunkowej zmien warunek na !==
pyro
Pamiętaj, że spacja albo enter to też znaki:

  1. <?php
  2.  
  3. var_dump(headers_sent()); // false
  4.  
  5. ?>


  1.  
  2. <?php
  3.  
  4.  
  5. ?>


  1. <?php
  2.  
  3.  
  4. ?>
mstraczkowski
Cytat(Monter08 @ 4.03.2013, 00:24:41 ) *
Dodaj ob_start na początek i w konstrukcji warunkowej zmien warunek na !==


Takie rozwiązanie zadziała, ale to tylko "łatka", których nie powinno się "naklejać"
Majcon
  1. <?php
  2. $co=file_get_contents("bla.php");
  3. if(empty($_COOKIE['czacikgg_licznik'])){
  4. setcookie('czacikgg_licznik' , 'licz', time()+60*60);
  5. $dodaj = $co+1;
  6. file_put_contents('bla.php', $dodaj);
  7. }
  8. echo "Odwiedzin: ".$co;
  9. ?>

Tak wygląda kod teraz wstąpiłem empty gdyż ciastko zostanie usunięte przecież po upływie godziny (tak zrozumiałem czytając jakieś forum na temat setcookie)

błąd który wyskakuje to

Warning: Cannot modify header
information - headers already sent by
(output started at /home/czacik/
domains/czacikgg.eu/public_html/
dd.php:1) in /home/czacik/domains/
czacikgg.eu/public_html/dd.php on
line 5

po wstawieniu
wartość jest true
mstraczkowski
Prawdopodobnie includujesz gdzieś w środku HTML ten skrypt.
Przez co dzieje się to co mówiłem, setcookie jest wykonywany po wyświetleniu czegoś na ekran.
W ogóle PHP powinien być oddzielony od warstwy HTML i wykonywać się PRZED nią
Majcon
To jest cały plik żadnego html nie ma
nospor
1) W kodzie widać, że masz spację przed <?php
2) Może też chodzić o utf8. Ma być bez BOM

3) Problem poruszany petryliard razy - zamykam
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.