?> <?php //Me conecto a la BD //Devuelve el numero de visitas a partir de una fecha en especifico //Imprime todas las visitas //Esta funcion solo registra una visita si ese mismo dia el usuario no ha entrado ala pagina $result= mysql_query($sql); registrarVisita($_SERVER [ 'REMOTE_ADDR' ]);
Continuando con la tanda de contadores, he decidido publicar la implementacion de un contador de visitas únicas. "Visita unica" significa que un usuario que entra a la pagina web por segunda, tercera o cuarta vez, etc. No es tomado en cuenta por el contador, ya que la primera vez que el usuario ingreso ya fue registrada su visita.
Este tipo de contadores permite acercarnos mucho mas a la realidad actual de nuestra pagina web, ya que en el caso de los contadores simples, la informacion que estos registran no puede ser confiable dado que pueden ocurrir recargas de paginas, visitas repetidas, etc. Y estas no son diferenciadas por los contadores estandar.
Para empezar el tutorial debemos crear una BD en MySQL llamada "contador_visitas_unicas", en esa base de atos vamos a agregar la siguiente tabla:CREATE TABLE `visitas` (
Como pueden ver, la tabla contiene tres campos: ID, Direccion IP y Fecha. Vamos a enfocarnos en los ultimos dos datos, dado que el primero no es realmente necesario. En el campo Direccion IP de esta tabla, es donde vamos a almacenar el identificador unico de cada computadora (su IP).
`id` int(4) unsigned NOT NULL auto_increment,
`direccion_ip` varchar(16) default NULL,
`fecha` date NOT NULL default '0000-00-00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=18 ;
Tambien vamos a usar una columna llamada "Fecha" donde vamos a registrar el dia en que fue almacenada la ip, ya que las visitas unicas son por dia, si el ultimo registro fue hace mas de un dia, entonces podemos volver a regstrarlo.
Debemos entonces conectarnos a la base de datos, para eso vamos a crear un archivo llamado conexion.php que vamos a importar a la página con la funcion "require()" donde estemos desarrollando y necesitemos conexion con la base de datos:
Código conexion.php
Una vez realizada la conexion, debemos crear el archivo "contador.php", en este archivo esta toda la logica de la página:
<?php
/* conexion ****************/
// conectamos al servidor MySQL
$link = mysql_connect('localhost', 'root', '');
if(!$link) {
die("Error al intentar conectar: ".mysql_error());
}
// seleccionamos la base de datos
$db_link = mysql_select_db('contador_visitas_unicas', $link);
if(!$db_link) {
die('Error al intentar seleccionar la base de datos'. mysql_error());
}
/* fin conexion ************/
Código conexion.php
En este archivo podemos destacar principalmente tres funciones:
//Sript hecho por Alejandro Sanchez
//www.internetdeveloping.blogspot.com
require('conexion.php');
function contarVisitas($aniodesde, $mesdesde, $diadesde )
{
$sql="select count(*) from visitas
where fecha >= '$aniodesde-$mesdesde-$diadesde'";
$result= mysql_query($sql);
if($row = mysql_fetch_array($result))
{
return $row[0];
}
else
return(0);
}
function imprimirVisitas()
{
$sql="select direccion_ip, fecha from visitas";
$result= mysql_query($sql);
while($row = mysql_fetch_row($result))
{
echo "fecha: " . $row[1] . " | Direccion ip ---> " . $row[0] . "<br>";
}
}
function registrarVisita($IDUSER)
{
/* --------------------------------------------------
Primero hacemos una consulta para ver si ese mismo
usuario ya está registrado el día de hoy.
------------------------------------------------- */
$sql="select * from visitas
where direccion_ip='$IDUSER'
and fecha=CURDATE()";
if(mysql_num_rows($result)==0) // Registrar la visita
{
$sql="INSERT INTO visitas VALUES(NULL,'$IDUSER',CURDATE())";
mysql_query($sql);
}
}
?>
<style type="text/css">
<!--
.style6 {font-size: 24px;
font-family: Georgia, "Times New Roman", Times, serif;
font-weight: bold;
}
-->
</style>
<table width="74%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td><p> </p>
<p>Contador de visitas unicas, los visitantes repetidos seran ignorados, hasta el dia siguietne.</p></td>
</tr>
<tr>
<td height="170" align="center" valign="middle"><p align="left"><br />
<br />
</p>
<?php
echo "Hasta ahora haz recibido un total de ".contarVisitas(2007, 10, 03 )." visitas unicas por dia";
echo "<BR><BR>Detalles de visitas: <br>";
imprimirVisitas();
?>
<p align="left"></p>
<p align="center">Alejandro Sánchez - <a href="http://internetdeveloping.blogspot.com/">http://internetdeveloping.blogspot.com/</a></p></td>
</tr>
</table>
Para realizar esa consulta debemos utilizar las funciones mysql_query y mysql_fetch_array que nos proporciona el framework de PHP.
A continuación les dejo un video tutorial con todo lo que acabo de explicar durante este tutorial, cualquier duda no duden en escribir! estamos para servir! :) aalejo@gmail.com.
Tambien les dejo el codigo fuente y un ejemplo funcionando:
jueves, 4 de diciembre de 2008
Video Tutorial - Contador de visitas UNICAS con PHP
Suscribirse a:
Enviar comentarios (Atom)
Muy buen tutorial, es una pasada, lo unico si se pudiera cambiar que se actualicen las visitas cada 15 minutos y no cada 24 seria una paada para un proyecto personal que estoy realizando.
ResponderEliminara mi me da error parse( de coma ) en la linea 10 de conexion php. alguien sabe algo?
ResponderEliminaroye gracias, es perfecto y funciona al cien jejejejeje
ResponderEliminarsaludos
Saludos Alejandro, te saluda José Ricardo de Perú, en realidad quiero agradecerte enormemente por compartir tus conocimientos, aunque no soy un experto en PHP, veo que el contenido de tus ejemplos son enormemente un esfuerzo propio de tu parte, sigue así amigo Alejandro, por otra parte, mi inquietud era si tú podrias desarrollar un Sistema de Matrícula para los estudiantes de la Facultad en la que yo estudio (Facultad de Educación y Humanidades), claro que previo a eso tendriamos que coordinar todo lo respecto a los costos que demandaria ello, de antemano te agradezco si me das una respuesta. Mi correo electronico es pepesolucion@hotmail.com
ResponderEliminarMuy bueno el tutorial. Es el día de hoy que sigo pensando si esto no ralentiza el servidor y es conveniente usar un contador externo, aunque la mayoría de los contadores externos gratuitos no informan lo que realmente quiero...
ResponderEliminar