Jak wyświetlić na stronie przybliżoną ilość osób on-line
piechnat
Poniższa funkcja zwraca tablicę, której pierwszym elementem jest ilość wszystkich odwiedzin, drugim elementem jest ilość odwiedzin w danym dniu natomiast trzeci element podaje przybliżoną ilość użytkowników przeglądających stronę (on-line).
<?php
function counter($t1=300,$t2=3600,$f="./counter.tmp"){
global $HTTP_COOKIE_VARS;
$a=getenv("REMOTE_ADDR");
$t=time();
$p=fopen($f,"a+");
flock($p,2);
$h=array_pad(explode("|",chop(fgets($p,100))),4,0);
while(!feof($p)){
$e=explode("|",$m=chop(fgets($p,100)));
if($e[1]>$t&&$e[0]!=$a)$b[]=$m;
}
$b[]=$a."|".($t+$t1);
$h[0]=count($b);
if(!$HTTP_COOKIE_VARS["lastvisit"]){
$h[1]++;
$h[2]++;
if($h[3]!=($d=date("d"))){
$h[2]=1;
$h[3]=$d;
}
}
setcookie("lastvisit",1,$t+$t2);
ftruncate($p,0);
fputs($p,join("|",$h)."\n".join("\n",$b));
flock($p,3);
fclose($p);
return array($h[1],$h[2],$h[0]);
}
?>
Do funkcji wprowadzić można trzy opcjonalne parametry:
- Czas przez jaki użytkownik jest traktowany jako obecny na stronie.
- domyślnie jest to 300 sekund czyli 5 minut
- parametr potrzebny do działania licznika on-line
- Czas przez jaki licznik wszystkich odwiedzin nie zostanie podwyższony
przy np. przeładowaniu czy odświeżeniu strony.- wartość ta ustawia czas 'życia' cookie w przeglądarce
- w przeglądarce z wyłączoną obsługą cookie mechanizm nie zadziała
- Nazwa pliku przechowującego dane (domyślnie "./counter.tmp")
- katalog ze skryptem musi mieć ustawione odpowiednie prawa do zapisu plików
Przykład użycia:
[$all, $today, $online] = counter();
echo "Odwiedzin: $all, Dzisiaj: $today, On-line: $online";