LIBREFOREVER.COM/BLOG

Informática, GNU/Linux, software libre, proyectos, guías, cosas que me sucedan, mis opiniones…

Archivo para 'Desarrollo web' Categoría

Crear un contador de visitas con PHP

Publicado por ERMes en Agosto 31st 2009

Hacer un contador de visitas con PHP es una tarea muy sencilla, pero si realmente deseamos contar las visitas es importante distinguir entre una visita y una vista, si nuestro contador solo se limita sumar una visita cada vez que se cargue la página (vista), tendremos un contador que marcará una visita cuando alguien entre en nuestra web y sumará una mas por cada vez que el visitante cambie de página en la web, por lo que un solo visitante puede marcar 6 o 7 visitas, por ejemplo. Para evitar esta confusión y no engañarnos a nosotros mismos, lo mejor es usar algún método que nos permita distinguir si el visitante es nuevo o ya ha estado en nuestro sitio. Para ello, lo mejor es dejar una cookie en el navegador de nuestro visitante que caducará después de un tiempo, de modo que si entra un visitante en nuestra web y ya tiene una de nuestras cookies, no contaremos su visita y, además, actualizaremos la fecha de caducidad de dicha cookie.

Si no entiendes de programación en PHP pero estás interesado en añadir este contador a tu página web, vete al final del artículo y sigue las instrucciones para instalarlo en tu servidor.

Primero hay que buscar una forma de controlar que nuestro contador de visitas no cuente una visita cada vez que se refresca la página y para ello, lo mejor es usar cookies. Con las cookies podemos dejar una marca en el navegador de nuestro visitante para no volver a contar su visita hasta después de transcurrido un tiempo determinado por nosotros. Para establecer ese tiempo, se usa la fecha de caducidad de la cookie. Con php, esto se hace con el siguiente código:

if ($_COOKIE["Visitante"] == "Admin") {
   //Si la cookie tiene la palabra clave "Admin" se establece la caducidad a un año
   $expire=time()+60*60*24*365;
   setcookie("Visitante", "Admin", $expire);
   $counted=true;
   $admin=true;
}
else {
   //Si el visitante no tiene la cookie con la palabra clave "Admin" se establece la fecha
   //de caducidad a 20 minutos.
   $admin=false;
   $expire=time()+60*20;
   global $counted;
   if (isset($_COOKIE["Visitante"])) {
      //Si el visitante ya tiene la cookie se actualiza la fecha de caducidad y se marca para
      //no ser contada.
      setcookie("Visitante", "Viejo", $expire);
      $counted=true;
   }
   else {
      //Si el usuario no tiene nuestra cookie se crea y se marca la visita para ser contada.
      setcookie("Visitante", "Nuevo", $expire);
      $counted=false;
   }
}

En este momento, ya tenemos controlada la visita y nos disponemos a añadirla a un archivo de texto donde se lleva la cuenta de visitas hoy y totales. Para hacer esto se puede usar el siguiente código:

$fichero_contador = "visitas.txt";   // Fichero donde se guardan los valores
$fichero = fopen($fichero_contador, "r");   // Abrimos el fichero para lectura
$leido = fread($fichero, 128);   // Leemos la cadena
$visitas = explode("@", $leido);   // Separamos en un array de tres elementos los datos
if (date("d") != $visitas[2]) {   // Si la fecha que hay en el fichero no es la de hoy
   $visitas[2] = date("d");   // Actualizamos la fecha (ponemos la de hoy)
   $visitas[1] = 0;   // Y ponemos las visitas de hoy a 0
}
//Suma la visita si se ha marcado para ser contada
if ($visitas[0] != "") {
   if ($counted == false) {
      $visitas[0]++;
      $visitas[1]++;
   }
} else {
   $visitas[0] = 1;
   $visitas[1] = 1;
}
//Cierra el fichero
@fclose($fichero);
//Reabre el fichero y actualiza los datos
$fichero = fopen($fichero_contador, "w");
$junto = implode("@", $visitas);
@fputs($fichero,$junto);
//Cierra el fichero
@fclose($fichero);

Si no quisiéramos que el visitante sepa la cuenta de visitas ya habríamos terminado pero vamos a escribir el código encargado de crear una imagen que podamos poner en nuestro sitio y muestre, al mismo tiempo que cuenta, las visitas.

//Comienza la renderización de la imagen
$dest = imagecreatetruecolor(135,50);
$blanco = imagecolorallocate($dest,255,255,255);
$negro = imagecolorallocate($dest,0,0,0);
$gris = imagecolorallocate($dest,228,232,234);
 
imagefill($dest,0,0,$gris);
 
$src[0] = imagecreatefromgif('0.gif');
$src[1] = imagecreatefromgif('1.gif');
$src[2] = imagecreatefromgif('2.gif');
$src[3] = imagecreatefromgif('3.gif');
$src[4] = imagecreatefromgif('4.gif');
$src[5] = imagecreatefromgif('5.gif');
$src[6] = imagecreatefromgif('6.gif');
$src[7] = imagecreatefromgif('7.gif');
$src[8] = imagecreatefromgif('8.gif');
$src[9] = imagecreatefromgif('9.gif');
 
//Escribe el texto
imagestring($dest, 5, 0, 0, 'Hoy', $negro);
 
for($i=0;$i

Gracias a este último código añadir el contador de visitas a cualquier parte de nuestra web o nuestro blog será la tarea mas simple del mundo, es tan simple como poner un código como este:

<img title="Contador de visitas ERMes" src="http://tu_web/cont/visitas.php" alt="" />

Si te interesa usar este contador de vistas tan solo tienes que descargarte este archivo y descomprimirlo en tu servidor.

Tags: ,
Publicado en Desarrollo web, General | Sin Comentarios »