GoDLike Comunity


Join the forum, it's quick and easy

GoDLike Comunity
GoDLike Comunity
Would you like to react to this message? Create an account in a few clicks or log in to continue.
Log in

I forgot my password

Checkpagerank.net
Who is online?
In total there are 3 users online :: 0 Registered, 0 Hidden and 3 Guests :: 1 Bot

None

Most users ever online was 18 on Wed Mar 01, 2023 5:42 pm
Statistics
We have 1651 registered users
The newest registered user is lesn1k

Our users have posted a total of 558 messages in 467 subjects

[PHP][Tutorial]Numara vizitatorii online pe site-ul tau [PHP]

Go down

 [PHP][Tutorial]Numara vizitatorii online pe site-ul tau [PHP] Empty [PHP][Tutorial]Numara vizitatorii online pe site-ul tau [PHP]

Post by MeG@DaN Thu Mar 10, 2011 12:08 pm

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.


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

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

Code:

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

Code:

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


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


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


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


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

Code:

<?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


Code:
<?php
require
"Counter.class.php"; // the counter class itself
$counter = new
VisitorCounter;
$counter->show();
?>
MeG@DaN
MeG@DaN
Administrator
Administrator

Mesaje : 465
Data de inscriere : 17/12/2010
Localizare : Acasa

http://godlike.forumclan.com

Back to top Go down

Back to top

- Similar topics

 
Permissions in this forum:
You cannot reply to topics in this forum