Contador en php

lalg210683

Bovino adolescente
#1
Hola a todos bakunos, hoy le traigo una pequeña calse hecha en php para tener un contador en nuestra web sin depender de nadie bueno primero les dejos la tabla que deben de crear en el mysql

PHP:
CREATE TABLE `contador` (
  `id` int(11) NOT NULL auto_increment,
  `ip` varchar(15) default NULL,
  `hora` varchar(8) default NULL,
  `fecha` varchar(20) default NULL,
  `horau` varchar(10) default NULL,
  `diau` char(3) default NULL,
  `aniou` varchar(4) default NULL,
  `referido` varchar(400) default NULL,
  KEY `id` (`id`)
)
una vez hecha la tabla debemos crear un archivo php donde pondremos el codigo de la clase que llevara el conteo de las visitas

PHP:
<?
include ('adodb5/adodb.inc.php');

class Contador{
    var $TotalVisitas=0;
    var $UsarCookies=true;
    
    function Contador(){
        $this->UsarCookies=$this->UsaCookies();
        //if ($this->UsarCookies)    $this->setCookie();    
        $this->CheckBD();
    }
    
    function SetCookie(){
        $dias=3;
        $dias=60 * 60 * 24 * $dias;
        setcookie('visita', date('z'), time() + $dias); //date("dmY H:i:s") = 29032010 19:42:13
    }
    
    function GetCookie()
    {
        if (isset($_COOKIE['visita']))    return $_COOKIE['visita'];
        else return -1;
    }
    
    function tabla_existe($nombre_tb) {
         
        $Respuesta=false;
        
        $conn = &ADONewConnection('mysql');
        $conn->Connect();
        $QUERY='SHOW TABLES';
        $recordSet = &$conn->Execute($QUERY);
        
        if (!$recordSet)
            print $conn->ErrorMsg(); //En caso de error
        else
        {
            //print_r($recordSet->fields);
            while (!$recordSet->EOF)
            {
                if ($nombre_tb==$recordSet->fields[0] )$Respuesta=true;
                //echo  $recordSet->fields[0] .'</br>';                
                $recordSet->MoveNext(); //Saltar al siguiente registro
            }            
        }
        $recordSet->Close();  // opcional
        $conn->Close(); // opcional
        return $Respuesta;
     }
    function CrearContador()
    {
        $TotalLetras= strlen($this->TotalVisitas);        
        $Cadena='';
        $Cadena= $this->TotalVisitas;
        $Numeros ='';        
        for ($j=0;$j<$TotalLetras;$j++){    
            $Numeros.='<img src="Imagenes/CONTADOR/conta_'.substr($Cadena,$j,1).'.png" width="24" height="24" align="bottom">';
        }        
        $men='<div id="contador">'.$Numeros.'</div>';
            
        echo $men;
    }
    
    function UsaCookies(){
        setcookie('TEST', '1', time() + (60 * 2));
        if(isset($_COOKIE['TEST'])) return false;//echo no Permite el uso de cookies " 
        else return true;//permite usar cookies " 
    }
    
    function CheckBD(){
        //se requiere el archivo para validar los datos de usuario de bdd para conectar 
        $DondeViene =$_SERVER['HTTP_REFERER'];
        $ip = $_SERVER['REMOTE_ADDR'] ;        
        $fecha = date("j \d\e\l n \d\e Y"); 
        $hora = date("h:i:s"); 
        $horau = date("h"); 
        $diau = date("z"); 
        $aniou = date("Y"); 
        
        $conn = &ADONewConnection('mysql');
        $conn->Connect();
        $QUERY='SELECT aniou, diau, horau, ip FROM contador WHERE aniou LIKE \''.$aniou.'\' AND diau LIKE \''.$diau.'\' AND horau LIKE \''.$horau.'\' AND ip LIKE \''.$ip.'\'';
        $recordSet = &$conn->Execute($QUERY);
        
        if (!$recordSet)
            print $conn->ErrorMsg(); //En caso de error
        else
        {    
            if ($this->UsarCookies)
            {                
                $Noregistrado=false;
                $CookieUser=$this->GetCookie();
                if (-1< $CookieUser)
                {                        
                    if ($CookieUser < date('z')){
                        $Noregistrado =true;}
                }else{$Noregistrado =true;}
            }else $Noregistrado=false;
            
            
            if(0==$recordSet->RecordCount() ||  $Noregistrado) 
            {                
                $valores=array();
                $valores['ip']=$ip;
                $valores['fecha']=$fecha;
                $valores['hora']=$hora;
                $valores['horau']=$horau;
                $valores['diau']=$diau;
                $valores['aniou']=$aniou;
                $valores['referido']=$DondeViene;
                $tabla='contador';
                $insertSQL = $conn->GetInsertSQL($tabla, $valores);
                $conn->Execute($insertSQL );                
                $this->SetCookie();                
            }
            /*
            if ($recordSet->RecordCount()>0) echo 'ip registrada';
            if ($Noregistrado) echo 'No habia cookie'; else echo 'false';            
            if ($this->UsarCookies) echo 'si usa cokiee' ; else echo 'no usa cookie';*/
        }
        $QUERY='SELECT ID FROM contador ';
        $recordSet = &$conn->Execute($QUERY);                
        $visitas = $recordSet->RecordCount(); 
        $recordSet->Close();  // opcional
        $conn->Close(); // opcional
        $this->TotalVisitas=$visitas;
    }
}

?>
ahora para que este codigo funcione deben primeor descargar las clases de adoddb para php del siguiente link http://sourceforge.net/projects/adodb/files/adodb-php5-only/adodb-510-for-php5/adodb510.tgz/download

una vez descargado lo descomprimimos en la misma carpeta que el archivo que creamos

ahora para usar la clase lo hacemos asi

PHP:
include ('Nombre detu archivo php');

$cuenta = new Contador();
$cuenta->CheckBD();
$cuenta->CrearContador();
y con eso realizara el conteo de visitas reales a nuestra web
espero les sirva o al menos les de una idea para ahacer algo mejor.

espero sus comentarios y sugerencias :eolo::metal:

bueno aqui pueden ver mi clase contador en funcionamiento www.laitingdelpacifico.com
 
#8
esta muy bueno, pero te sugiero que no lo pongas en el header, no se ve muy bien o no para mi gusto, pienso que ese espacio lo puedes aprovechar para publicidad o promocionar tus mismos productos, y el contador estaria bien en una de las barras laterales, tienes un buen espacio debajo del menu de categorias
 
Arriba