Myrek
12.04.2004, 21:50:22
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
12.04.2004, 21:55:33
na 99% register globals... wstaw $vis = $_COOKIE['vis']; przed $p_licznik = fopen("coun.n","r");, powinno pomóc :wink:
Chewolf
13.04.2004, 13:05:41
Wstaw to na samą górę:
[php:1:8530a91de9]<?php
extract(array_merge($_GET,$_POST,$_COOKIE,$_SESSION),EXTR_OVERWRITE);
?>[/php:1:8530a91de9]
Myrek
13.04.2004, 19:15:05
Dzięki chłopaki, ale nie pomogły obie rady.
Lerno
14.04.2004, 10:35:18
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
14.04.2004, 23:43:51
Ten liczni też nie działa. Za każdym razem, gdy odświeży się stronę licznik zostaje zwiększony. Dziwna sprawa.
może po prostu masz wyłączoną obsługę cookie...
Myrek
16.04.2004, 19:43:44
Mam włączoną, to podstawa
Na każdym kompie są takie same objawy
TroYan
19.05.2004, 20:11:33
ej chlopaki mam pytanie ... jak zrobic licznik jednodniowy
taki ktory wyswietla ile uzytkownikow odwiedzilo strone w dzisiejszym dniu ? a na nastepny dzien zeby sie resetował
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
21.05.2004, 08:23:01
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
21.05.2004, 15:56:04
e mastachy a jaka jest funkcja na sprawdzanie daty modyfikacji ?
mike
21.05.2004, 16:00:16
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
22.05.2004, 15:58:34
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.