forum.top123.ro • Prima pagină

Acum este Dum 21 Martie 2010, 2009 11:12:48

  • Page 1 of 11
    Forum moderator: Mihaitza 
    Forum hituri.ucoz.net » Web Design, Programare » Programare, Script-uri PHP » Numara vizitatorii online pe site-ul tau
    Numara vizitatorii online pe site-ul tau
    hituriData adaugari : Luni, 02 Martie 2009, 18:27:56 | Mesajul # 1
    ADMIN
    Groupa : Utilizatori
    Reputatie : 1
    Status : Offline (neconectat)
    Te-ai intrebat vre-odata cati vizitatori sunt online la un moment dat pe site-ul tau In acest tutorial vom analiza o metoda efectiva de a afisa numarul total de vizitatori online pe site.

    Variabila $sessionTimeInMin reprezinta numarul de minute ce trebuie sa treaca inainte de a reseta contorul. Un vizitator nu mai este luat in calcul doar daca nu a realizat nici o actiune in intervalul de minute mai sus mentionat.
    Incepem prin a crea o clasa care se va ocupa de statisticile noastre.

    <?php
    class VisitorCounter {
    var $sessionTimeInMin = 5;
    }
    ?>

    Functia constructoare a clasei va actualiza basa de date stergand vizitatorii inactivi si adaugand / actualizand restul de vizitatori.

    public function VisitorCounter()
    {
    $ip = $_server['REMOTE_ADDR'];
    $this->cleanVisitors();
    if ($this->visitorExists($ip))
    {
    $this->updateVisitor($ip);
    } else
    {
    $this->addVisitor($ip);
    }
    }

    Acum cream functia care se va ocupa strict de sterge vizitatorilor inactivi in perioada X de minute

    private function cleanVisitors()
    {
    $sql = "select * from counter";
    $res = Mysql_query($sql);
    while ($row = mysql_fetch_array($res))
    {
    if (time() - $row['lastvisit'] >= $this->sessionTimeInMin * 60)
    {
    $dsql = "delete from counter where id = $row[id]";
    mysql_query($dsql);
    }
    }
    }

    Urmeaza functia care se ocupa de verificarea vizitatorilor in baza de date. Daca un vizitator nu este in baza de date va returna false

    public function visitorExists($ip)
    {
    $sql = "select * from counter where IP = '$ip'";
    $res = mysql_query($sql);
    if (mysql_num_rows($res) > 0)
    {
    return true;
    } else
    if (mysql_num_rows($res) == 0)
    {
    return false;
    }
    }

    Urmatoara functie va actualiza un vizitator daca acesta exista in baza de date

    private function updateVisitor($ip)
    {
    $sql = "update counter set lastvisit = '" . time() . "' where ip = '$ip'";
    mysql_query($sql);
    }

    Functia care urmeaza se va ocupa de adaugarea unui vizitator daca acesta nu exista in baza de date

    private function addVisitor($ip)
    {
    $sql = "insert into counter (ip ,lastvisit) value('$ip', '" . time() . "')";
    mysql_query($sql);
    }

    Acum aflam numarul de vizitatori din baza de date online pe site

    public function getAmountVisitors()
    {
    $sql = "select count(id) from counter";
    $res = mysql_query($sql);
    $row = mysql_fetch_row($res);
    return $row[0];
    }

    Urmatoarea bucata de cod se va ocupa de afisarea efectiva a counter-ului in pagina

    public function show()
    {
    echo '<div style="padding:5px; margin:auto; background-color:#fff"><b>' . $this->getAmountVisitors() . 'visitors online</b></div>';
    }

    In final vom obtine un script php pe care il poti salva de exmplu ca Counter.class.php al carui cod arata dupa cum urmeaza:

    <?php
    class VisitorCounter
    {
    var $sessionTimeInMin = 5; // time session will live, in minutes
    public function VisitorCounter()
    {
    $ip = $_SERVER['REMOTE_ADDR'];
    $this->cleanVisitors();
    if ($this->visitorExists($ip))
    {
    $this->updateVisitor($ip);
    } else
    {
    $this->addVisitor($ip);
    }
    }
    public function visitorExists($ip)
    {
    $sql = "select * from counter where ip = '$ip'";
    $res = mysql_query($sql);
    if (mysql_num_rows($res) > 0)
    {
    return true;
    } else
    if (mysql_num_rows($res) == 0)
    {
    return false;
    }
    }
    private function cleanVisitors()
    {
    $sessionTime = 30;
    $sql = "select * from counter";
    $res = mysql_query($sql);
    while ($row = mysql_fetch_array($res))
    {
    if (time() - $row['lastvisit'] >= $this->sessionTimeInMin * 60)
    {
    $dsql = "delete from counter where id = $row[id]";
    mysql_query($dsql);
    }
    }
    }
    private function updateVisitor($ip)
    {
    $sql = "update counter set lastvisit = '" . time() . "' where ip = '$ip'";
    mysql_query($sql);
    }
    private function addVisitor($ip)
    {
    $sql = "insert into counter (ip ,lastvisit) value('$ip', '" . time() . "')";
    mysql_query($sql);
    }
    public function getAmountVisitors()
    {
    $sql = "select count(id) from counter";
    $res = mysql_query($sql);
    $row = mysql_fetch_row($res);
    return $row[0];
    }
    public function show()
    {
    echo '<div style="padding:5px; margin:auto; background-color:#fff"><b>' .
    $this->getAmountVisitors() . 'visitors online</b></div>';
    }
    }
    ?>

    Utilizarea counter-ului se face foarte simplu utilizand doar 3 linii de cod

    <?php
    require "Counter.class.php"; // the counter class itself
    $counter = new VisitorCounter;
    $counter->show();
    ?>


    By Mihaitza
     
    Forum hituri.ucoz.net » Web Design, Programare » Programare, Script-uri PHP » Numara vizitatorii online pe site-ul tau
    Page 1 of 11
    Search: