Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] problem z licznikiem odwiedzin & cookies
ddzkm
post
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 22.02.2009

Ostrzeżenie: (0%)
-----


Mam pytanko - co może być przyczyną notorycznego wyświetlania przez przeglądarkę poniższego komunikatu:

Warning
: Cannot modify header information - headers already sent by (output started at /home/adres.strony/public_html/test/temp/templates_c/%%45^45E^45E480CD%%index.tpl.php:8) in /home/adres.strony.pl/public_html/test/licznik.php on line 9

Wiem, że problem polega na ciasteczkach, ale gdzie on leży kompletnie nie mam pojęcia. Próbowałem instalować już chyba wszystkie rodzaje liczników php, ale albo nie działają (wyświetlajac powyższy komunikat), albo nie blokują odświeżenia, albo też same blokują się na jednej wartości odwiedzin. Zaznaczam, że mój serwer obsługuje php, a ja mam włączoną obsługę cookies w przeglądarce. Będę bardzo wdzięczny za pomoc, siedzę już nad tym drugi dzień i nic sam nie umiem z tym zrobić (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(ddzkm @ 24.02.2009, 20:01:53 ) *
Mam pytanko - co może być przyczyną notorycznego wyświetlania przez przeglądarkę poniższego komunikatu:

Warning
: Cannot modify header information - headers already sent by (output started at /home/adres.strony/public_html/test/temp/templates_c/%%45^45E^45E480CD%%index.tpl.php:8) in /home/adres.strony.pl/public_html/test/licznik.php on line 9

Ja również mam pytanko - próbowałeś szukać? Temat porszuany tysiące razy, wystarczy poszukać.
Go to the top of the page
+Quote Post
Foxx
post
Post #3





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

Ostrzeżenie: (0%)
-----


http://phpedia.pl/wiki/Cannot_add_header_i...rs_already_sent
Go to the top of the page
+Quote Post
ddzkm
post
Post #4





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 22.02.2009

Ostrzeżenie: (0%)
-----


Nic nie pomaga, a zrobiłem tak jak tam jest napisane. Mam jeszcze pytanie - czy zastosowanie plików .tpl może tu mieć znaczenie? Bo kod licznika jest zapisany w pliku licznik.php, a rezultat przesyłany do pliku licznik.tpl za pomocą polecenia:

{include_php file="licznik.php"}
Go to the top of the page
+Quote Post
Foxx
post
Post #5





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

Ostrzeżenie: (0%)
-----


Dopóki nie wkleisz odpowiednich fragmentów kodu, nie da się pomóc.
Go to the top of the page
+Quote Post
ddzkm
post
Post #6





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 22.02.2009

Ostrzeżenie: (0%)
-----


Zawartość pliku licznik.php:
CODE
function polnoc() /* odmierza ile sekund od danej chwili jest do konca dnia*/
{
$teraz = date("H:i:s");
$czas = explode(":", $teraz);
$godziny = 23-$czas[0];
$minuty = 59-$czas[1];
$sekundy = 59-$czas[2];
$waznosc = $godziny*3600 + $minuty*60 + $sekundy;
return $waznosc;
}

if((!isset($_COOKIE['licznik'])) && (!strstr($_SERVER['HTTP_REFERER'], "www.nazwa-strony.pl")))
{

$plik = fopen("licznik.txt", "r");
$tekst = fread($plik, filesize("licznik.txt"));
$dane = explode(";", $tekst);
fclose($plik);
$plik = fopen("licznik.txt", "w");
flock($plik, 2);
$dane[0]++;
fwrite($plik, "$dane[0];", 15);
flock($plik, 3);
fclose($plik);

/*LICZNIK DZIENNY - MADE BY WOWO */
$data = date("Y-m-d"); /*zmienna przechowująca dzisiejszą datę*/
$dzienny=fopen("dzienny.txt","r"); /*otwieramy plik, plik jest formatu yyyy-mm-dd:liczba:yyyy-mm-dd:liczba, gdzie pierwsza data jest data dzisiejsza, pierwsza liczba liczbą odwiedzin dzisiaj, druga data, to data wczorajsza, druga liczba to liczba odwiedzin wczoraj*/
$dzienny_tekst =fread($dzienny, filesize("dzienny.txt")); /*czytamy caly plik do zmiennej dzienny_tekst*/
$dane2 = explode(":", $dzienny_tekst); /*rozbijamy wczytany tekst z pliku, na daty i liczby klikniec - calosc bedzie w tabeli*/
fclose($dzienny); /*zamykamy plik, ktory otwarlismy tylko do odczytu*/

if($dane2[0]==$data) /*jesli w pierwsza data w pliku jest data dzisiejsza to dzialamy jak nizej*/
{ $dane2[1]++; /*zwiekszamy liczbe klikniec dzisiaj*/
$dzienny=fopen("dzienny.txt","w"); /*otwieramy plik do zapisu*/
flock($dzienny, 2); /* blokujemy plik przed zapisem*/
fwrite($dzienny, "$dane2[0]:$dane2[1]:$dane2[2]:$dane2[3]", 30); /*zapisujemy calość do pliku */
flock($dzienny, 3); /* odblokowujemy plik */
fclose($dzienny); /* zamykamy plik */
}
else/* jeśli pierwsza data w pliku nie jest dzisiejszą datą */
{ $dane2[2]=$dane2[0]; /* druga date w pliku ustawiamy, ta ktora byla do tej pory pierwsza*/
$dane2[3]=$dane2[1]; /* druga liczbe odwiedzin ustawiamy, ta ktora byla do tej pory pierwsza*/
$dane2[0]=$data; /* ustawiamy pierwsza date w pliku na date dzisiejsza*/
$dane2[1]=1; /* liczbe klikniec ustawiamy na 1 bo sa to pierwsze odwiedziny tego dnia*/
$dzienny=fopen("dzienny.txt","w"); /*otwieramy plik do zapisu*/
flock($dzienny, 2); /*blokada zapisu*/
fwrite($dzienny, "$dane2[0]:$dane2[1]:$dane2[2]:$dane2[3]", 30); /*zapisujemy calość do pliku */
flock($dzienny, 3);/* odblokowujemy plik */
fclose($dzienny);/* zamykamy plik */
}


setcookie("licznik", "zliczono", time()+polnoc()+1 ); /* cookie blokuje licznik do konca doby */
}else{

$plik = fopen("licznik.txt", "r"); /* obsluga licznika stalego*/
$tekst = fread($plik, filesize("licznik.txt"));
$dane = explode(";", $tekst);
fclose($plik);

$dzienny=fopen("dzienny.txt","r"); /* obsluga licznika dziennego*/
$dzienny_tekst =fread($dzienny, filesize("dzienny.txt"));
$dane2 = explode(":", $dzienny_tekst);
fclose($dzienny);
}
?>

Stronę odwiedziło:<?php echo($dane[0]); ?> gości.
Dzisiaj (<?php echo($dane2[0]); ?>) stronę odwiedziło: <?php echo($dane2[1]); ?> gości.
Wczoraj (<?php echo($dane2[2]); ?>) stronę odwiedziło: <?php echo($dane2[3]); ?> gości.


Zawartość pliku licznik.tpl:
CODE

<TD ID="box_a">
<B>Statystyki serwisu:</B>
</TD>
</TR>
<TR>
<TD ID="box_b">
{include_php file="licznik.php"}
</TD>
</TR>
<TR>
<TD ID="box_a">
<B>Dzisiaj jest...</B>
</TD>
</TR>
<TR>
<TD ID="box_b">
{$smarty.now|date_format:"%Y-%m-%d"};
</TD>
</TR>
<TR>
<TD ID="box_a">
<B>Godzina:</B>
</TD>
</TR>
<TR>
<TD ID="box_b">
{$smarty.now|date_format:"%H:%M:%S"};
</TD>
</TR>
<TR>


Ten post edytował ddzkm 24.02.2009, 19:12:46
Go to the top of the page
+Quote Post
Foxx
post
Post #7





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

Ostrzeżenie: (0%)
-----


1. Zastosuj znaczniki do kodu PHP bo teraz jest nieczytelny i nikomu się nie chce go czytać.
2. Po pobieżnym zerknięciu wydaje mi się, że nie wkleiłeś odpowiedniego fragmentu, gdzieś może korzystasz z funkcji header albo session_start ?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 18:18