Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Licznik liczący gości na stronie www
Forum PHP.pl > Forum > PHP
kartegg
Witam serdecznie,
mam następujący problem i chodzi o tę stronę:

http://frameart.pl/test3/edukacja/aktualnosci.php

po każdym odświeżeniu strony licznik zlicza mi i powiększa o jeden
nie wiem czemu tak teraz to się dzieje
wcześniej było tak, że dopiero po 24 godzinach zwiększało się o 1 i tak właśnie chciałbym żeby było
czy mógłby ktoś mi pomóc?

z góry dziękuję



tu macie kod z pliku aktualnosci.php ale tylko te fragmenty, które odpowiadają za licznik:

CODE
<?php
include('licznik.php');
?>
<!DOCTYPE html>
<html>
<head>
<title>...</title>
<meta charset="UTF-8">


--------------------------------------------------------------------------------------------------------------------------------------------------------------------
i dalsza część tego samego pliku już na samym dole:

<div style="text-align: center; margin-bottom: 0px; line-height: 16px; font-size: 12px; font-family: 'Open Sans', sans-serif;">
<span style="text-align: center; margin-bottom: 0px;">
Webmaster: <a href="http://www.frameart.pl" target="_blank">www.frameart.pl</a><br />Tę stronę odwiedziło
<?php
include('licznik.txt');
?>
gości
</span>
</div>





tu macie zawartość pliku licznik.php:

CODE
<?php

if(!$_COOKIE['licznik']=="1")
{
$plik="licznik.txt";

//odczytujemy aktualną wartość z pliku
$file=fopen($plik, "r");
flock($file, 1);
$liczba=fgets($file, 16);
flock($file, 3);
fclose($file);
$liczba++; //zwiększamy o 1

//zapisujemy nową wartość licznika
$file=fopen($plik, "w");
flock($file, 2);
fwrite($file, $liczba++);
flock($file, 3);
fclose($file);

@setcookie("licznik","1", time()+60*60*24);
}


?>





jest jeszcze plik o nazwie: licznik.txt:
ale w tym pliku po prostu jest liczba, np. 1
Tomplus
zlikwiduj małpę przed setcookie a dowiesz się jaki jest błąd., bo jeżeli zmienia ci się wartość pliku to tylko i wyłącznie z powodu warunku: if(!$_COOKIE['licznik']=="1")
kartegg
a więc usunąłem z pliku: licznik.php małpkę

i zostało tak:

CODE
setcookie("licznik","1", time()+60*60*24);


uruchomiłem tę stronę:
http://frameart.pl/test3/edukacja/aktualnosci.php

w trybie NOWE OKNO PRYWATNE

i u góry pojawił się takowy komunikat:
Warning: Cannot modify header information - headers already sent by (output started at /test3/edukacja/aktualnosci.php:1) in /test3/edukacja/licznik.php on line 22

ja nie znam PHPa
czy mógłbym otrzymać konkretną odpowiedź jak to zrobić
co zmienić itd.?

Tomplus
Odpowiedź jest jasna. Wysyłasz przed nagłówkiem dodatkowe informacje i tworzy się się błąd, dlatego nie działa COOKIE.

Sprawdź czy przypadkiem nie ma jakiegoś białego znaku przed kodem <?php gdzie includujesz licznik.php lub to samo w kodzie licznika.
Ew. gdy kodowałeś stronę na UTF-8, sprawdź czy kodowanie jest WITH BOM czy WITHOUT BOM. Prawdopodobnie masz z BOM i powinieneś przekodować na UTF-8 bez BOM.
kartegg
Białego znaku nie ma
kodowanie jest całe w UTF-8 w pliku aktualnosci.php, licznik.txt i licznik.php

jeśli chodzi o białe znaki w pliku, to nie zauważyłem

wkleję dwa zrzuty ekranu z pliku:

licznik.php:



i fragment pliku aktualnosci.php:


więc gdzie jest błąd?

jeśli chodzi o plik licznik.php

to tam w linijce 22 był:
setcookie("karteg_licznik","1", time()+60*60*24);

i linjka 5:
$plik="karteg_licznik.txt";

chodzi o karteg
wcześniej to wywaliłem

i czemu mi kazaliście wywalić @ przed setcookie?
bobek358
Zastosowanie "małpy: powoduje nie wyświetlanie błędów z zadanej funkcji.
Kodowanie UTF-8 bez bom?
Tomplus
Przecież mówię, że kodowanie UTF-8 z BOM powoduje taki błąd.

Zrób konwersję do UTF-8 BEZ BOM.

Na twoich zrzutach widać wyraźnie w jednym pliku, że masz kodowanie z BOM, pewnie w licznik.php będzie to samo.
Kodowanie z BOM powoduje że dodają się białe znaki (które ty nie widzisz) do nagłówka strony, często objawiają się na stronie lub kodzie jako 3 kropki: ...
Wiem bo miałem kiedyś dokładnie taką samą bolączkę.
Pyton_000
Przecież licznil jest wstawiony pomiędzy HTML...
Poza tym błąd wałkowany pierdyliard razy....
kartegg
pyton_000:

to może powiesz jak to rozwiązać?
ja nie znam php


wszystkie trzy pliki są kodowane w samym UTF8
Pyton_000
include z licznikiem przenieść na samą górę. Żaden znak nawet spacja nie może być przed <?
kartegg
include z licznikiem php jest na samej górze
a tu w HTMLu wywołuję plik tekstowy
bo jak inaczej mam go wywołać?

poza tym okazało się, że źle Was zrozumiałem
bo myślałem, że chodzi o samo UTF-8
a tam w Notepad++ jest UTF-8 (bez BOM)
czego nie zauważyłem
przekonwertowałem kodowanie i chyba jest ok
i chyba działa ok

możecie sprawdzić i powiedzieć mi czy jest ok
nie zwiększa już się licznik o 1 przy każdym odświeżeniu
tylko jak włączę okno prywatne

http://frameart.pl/test3/edukacja/aktualnosci.php


dziękuję wszystkim za pomoc
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.