Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Prosty licznik odwiedzin na pliku
Forum PHP.pl > Forum > Gotowe rozwiązania
Myrek
Witam
Mam taki prosty skrypt licznika odwiedzin. Oparty on jest na pliku i cookie.
[php:1:5a85efc046]
<?
setcookie("vis","1",time()+3600*12);
?>
{Kod HTML, HEAD, BODY}
<?
$p_licznik = fopen("coun.n","r");
flock($p_licznik, 1);
$licznik = fgets($p_licznik, 20);
flock($p_licznik, 3);
fclose($p_licznik);
if($vis!="1")
{
$licznik++;
}
$p_licznik = fopen("coun.n","w");
flock($p_licznik, 2);
fputs($p_licznik, $licznik);
flock($p_licznik, 3);
fclose($p_licznik);
?>
{znów HTML, BODY}
<? echo $licznik ?>
{zakończenie HTML>
?>[/php:1:5a85efc046]
I coś w tym kodzie jest nie tak. Przy każdym odświeżaniu strony, zostaje zwiększny licznik. Co trzeba poprawić? Aż mi głupio pytać o tak prosty kod :oops:
otacon
na 99% register globals... wstaw $vis = $_COOKIE['vis']; przed $p_licznik = fopen("coun.n","r");, powinno pomóc :wink:
Chewolf
Wstaw to na samą górę:
[php:1:8530a91de9]<?php
extract(array_merge($_GET,$_POST,$_COOKIE,$_SESSION),EXTR_OVERWRITE);
?>[/php:1:8530a91de9]
Myrek
Dzięki chłopaki, ale nie pomogły obie rady.
Lerno
Mam taki licznik. Moze ci pomoze, chociaz podobnych tematow bylo wiele.
[php:1:24190e2227]<?php
if(!file_exists("licznik/licznik.txt")){
$fd = fopen("licznik/licznik.txt", "w+");
}
else{
$fd = fopen("licznik/licznik.txt","r+");
}
$numer = trim(fgets($fd));
echo 'Licznik:' . $numer . '<br />';
if ($numer == ""){
$numer = "1";
rewind($fd);
@flock($fd, "2");
print 'Licznik:' . $numer . '<br>';
fwrite($fd, $numer);
@flock($fd, "3");
fclose($fd);
}
elseif(!isset($_COOKIE['C_licznik'])){
rewind($fd);
@flock($plik, "2");
$numer++;
fwrite($fd, $numer);
@flock($fd, "3");
fclose($fd);
}
else{
//echo "<br>nie dziala[2]";
}
?>[/php:1:24190e2227]

W glownym pliczku gdzie bedziesz wyswietlal licznik dodaj na samym poczatku jeszcze:

[php:1:24190e2227]<?php setcookie("C_licznik", "ustawione cookie", time()+3600);
?>[/php:1:24190e2227]
Myrek
Ten liczni też nie działa. Za każdym razem, gdy odświeży się stronę licznik zostaje zwiększony. Dziwna sprawa.
Ive
może po prostu masz wyłączoną obsługę cookie...
Myrek
Mam włączoną, to podstawa smile.gif Na każdym kompie są takie same objawy
TroYan
ej chlopaki mam pytanie ... jak zrobic licznik jednodniowy questionmark.gif taki ktory wyswietla ile uzytkownikow odwiedzilo strone w dzisiejszym dniu ? a na nastepny dzien zeby sie resetował
Ive
w pliku zapisujesz dane w np. takiej strukturze:
Kod
20.05.2004 // data

123 // ilosc odwiedzin

i teraz skryptem sprawdzasz na indexie jeżeli data z pliku jest równa dzisiejszej dacie to dopisujesz +1 do licznika a jak nie to zapisujesz 1 w liczniku
możesz też to robić że nowy plik = nowa data ale ppierwszy sposób jest wg mnie lepszy
GeoS
Przy kazdym zapisie musisz sprawdzic, czy data ostatniej modyfikacji nie byla "wczoraj".
Pseudo kod:
[php:1:66d067d72a]<?php

if(!wczoraj())
{
zlicz();
}
else
{
licz_od_nowa();
}
?>[/php:1:66d067d72a]
TroYan
e mastachy a jaka jest funkcja na sprawdzanie daty modyfikacji ?
mike
Cytat
e mastachy a jaka jest funkcja na sprawdzanie daty modyfikacji ?

Manual mówi:
Cytat
Returns the time the file was last changed ...

Polecam zajrzeć : filectime oraz filemtime
TroYan
a poradzilem sobie inaczej ;p zrobilem plik w ktorym jest data dzisiejszego dnia zapisana i porownoje ta date ;p
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-2024 Invision Power Services, Inc.