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:

  1. 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
  2. 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
  3. 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";

0 komentarzy