Mesaje privateMesaje private   AutentificareAutentificare 

 
[php]Numarul on'line de vizitatori p site'ul tau

 
Creaza un subiect nou   Raspunde la subiect    Pagina de start a forumului Crackers's Official Supporting Forum : HTML, PHP, MySQL, MsSQL
Subiectul anterior :: Subiectul urmator  
Autor Mesaj

GiovanY
Founder
Founder
GiovanY

Data inscrierii: 05/Sep/2008
Mesaje: 1979

MesajTrimis: 09/11/2008 18:19    Titlul subiectului: [php]Numarul on'line de vizitatori p site'ul tau Raspunde cu citat (quote)

Numara vizitatorii online pe site-ul tau

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 complet de vizitatori online pe site.

Variabila $sessionTimeInMin reprezinta numarul de clipe 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.

Cod:


<php>


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

Cod:

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

Cod:

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

Cod:

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 asta exista in baza de date
Cod:


private  function updateVisitor($ip)
    {

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

[code]
public function show()
{
echo '<div><b>' . $this->getAmountVisitors() . 'visitors online</b></div>';
}
[/cpde]

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:

[code]
<php>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><b>' .
$this->getAmountVisitors() . 'visitors online</b></div>';
}
}
?>
[/code]

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

[code]

<php>show();
?>
[/cpde]

NOTA: in acest tutorial nu ne ocupam in amanunt de conectarea la baza de date si / sau utilizarea conexiunilor / extragerea datelor. Tutorial adaptat dupa ineedtutorials.com punctweb.com nu-si asuma raspunderea pentru eventualele daune provocate de punerea eventual defectuoasa in practica a acestui tutorial.

$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

Cod:
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

Cod:
public function getAmountVisitors()
{
$sql = "select count(id) from counter";
$res = mysql_query($sql);
$row = mysql_fetch_row($res);
return $row[0];
}
Sus
Vezi profilul utilizatorului Trimite mesaj privat Trimite un mesaj
Afiseaza mesajele pentru a le previzualiza:   
Creaza un subiect nou   Raspunde la subiect    Pagina de start a forumului Crackers's Official Supporting Forum : HTML, PHP, MySQL, MsSQL Ora este GMT + 2 ore
Pagina 1 din 1

 
Mergi direct la:  
Nu puteti crea un subiect nou in acest forum
Nu puteti raspunde in subiectele acestui forum
Nu puteti modifica mesajele proprii din acest forum
Nu puteti sterge mesajele proprii din acest forum
Nu puteti vota in chestionarele din acest forum