drivtdt
(Drivtdt)
28 Wrzesień 2009 17:40
#1
Mam tu prosty i prawidłowo działający kod php na licznik odwiedzin na stronie i chciał bym spytać… :x
Czy da się go rozbudować by był odporny na odświeżanie strony by zapisywał każdego gościa tylko raz ??
Oto kod :
<?PHP
function getHits()
{
if(($fp = @fopen("counter.txt", "r+")) === false)
return false;
$count = fgets($fp);
$count = $count + 1;
fseek($fp, 0);
fputs($fp, $count);
fclose($fp);
return $count;
}
echo(getHits());
?>
IcyMat
(IcyMat)
28 Wrzesień 2009 19:38
#2
Zrób sobie jakiś oddzielny plik i zapisuj w nim IP odwiedzających. Następnie przed zapisem kolejnego odwiedzinka (tak wiem, że nie ma czegoś takiego, ale mam nadzieję, że kapujesz o co mi chodzi ;P) sprawdzaj czy istnieje już takie ip w pliku z ip
IcyMat
(IcyMat)
28 Wrzesień 2009 20:39
#4
Ad. 1.
Chciał, żeby było prosto więc zaproponowałem najprostszy sposób. Można by to zrobić jeszcze na cookies, ale to też ma wady jak i zalety…
Ad. 2.
Niestety taka jest prawda, ale ma to też swoje plusy - podwyża statystykę xD
drivtdt
(Drivtdt)
29 Wrzesień 2009 06:53
#5
Mam taki kod i jest odporny na odświeżanie może mi ktoś wskazać błędy bo kiedy go otwieram w przeglądarce nic nie ma pusta karta ? Może murze stworzyć do tego jeszcze jakiś plik ?
<?
setcookie("visited", "1", time()+3600);
?>
<?
if(file_exists("counter.n"))
{
$file=fopen("counter.n", "r");
flock($file, 1);
$ile=fgets($file, 100);
flock($file, 3);
fclose($file);
if($_COOKIE['visited'] != 1)
{
$ile++;
}
}
else
{
$ile=1;
}
$file=fopen("counter.n", "w");
flock($file, 2);
fwrite($file, $ile);
flock($file, 3);
fclose($file);
?>
<?
echo($ile);
?>
Adwody1
(Adwody1)
29 Wrzesień 2009 12:44
#6
Czy umieściłeś plik na serwerze ? (lub lokalnie - Apache+PHP)
drivtdt
(Drivtdt)
29 Wrzesień 2009 12:59
#7
No otwieram to w przez wampserwer