|
Si tienes un sitio Web alojado en un
servidor que soporta PHP y MySQL, puedes implementar en tus
páginas un script que cuenta las visitas (impresiones)
totales, las del día actual y los usuarios que hay
conectados en cada instante. Los datos se almacenan en dos
tablas, que debes albergar en tu servidor MySQL. Debes
subir a tu servidor, a través de FTP, un script con el
nombre conta_user.php (o el que tu elijas).
Previamente deberás crear una carpeta, que puedes llamar
counter, que sirva para alojar el contador. El código
del script es el siguiente:
|
<?php
/*
:: Programa para contar las páginas vistas y los
usuarios online en un sitio
web ::
Cuenta las visitas totales (acumuladas), las diarias y
los usuarios que se encuentran activos en el sitio.
*/
/*
:: Datos de la base de datos ::
*/
$server = 'tu_servidor_de_base_de_datos';
$user = 'nombre_usuario';
$pass = 'contraseña';
$db2 = 'nombre_base';
/*
:: Conexión a la base ::
*/
$db = mysql_connect("$server", "$user", "$pass") or die("No
hay conexión.");
if(!$db)
die("no db");
if(!mysql_select_db("$db2",$db))
die("No se seleccionó la base de datos.");
/*
:: Lectura y escritura de datos en la tabla visitas ::
*/
$server_time=date("U");
$client_ip=$REMOTE_ADDR;
$arr = getdate();
$dia_actual = $arr["mday"];
$hora_actual = $arr["hours"];
$minuto_actual = $arr["minutes"];
$visita = mysql_query("SELECT * FROM visitas");
while($row = mysql_fetch_array($visita)) {
extract($row);
$dia = $row["dia"];
$totales = $row["totales"];
$hoy = $row["hoy"];
if ($dia_actual != $dia) {
$hoy = 1;
}else{
$hoy++;
}
$totales++;
}
$actualiza="UPDATE visitas SET dia='$dia_actual',
totales='$totales', hoy='$hoy'";
mysql_query($actualiza);
/*
:: Lectura y escritura de datos de usuarios online ::
*/
$p4 = mysql_query("SELECT * FROM current_users WHERE ip='$client_ip'");
$pa4 = mysql_fetch_array($p4);
if($pa4) {
$update="UPDATE current_users set time='$server_time'
where ip='$pa4[ip]'";
mysql_query($update) or die("No es posible actualizar: "
. mysql_error());
} else {
$query=("INSERT INTO `current_users` (`ip`, `time`)
VALUES ('$client_ip', '$server_time')");
$result = mysql_query($query) or die("No se puede
insertar: " . mysql_error());
}
$time2=$server_time-1800;
$remove="DELETE from current_users WHERE time<'$time2'";
mysql_query($remove) or die("Unable to delete: " .
mysql_error());
$result6 = mysql_query("SELECT ip FROM current_users" );
$current_visitors = mysql_num_rows($result6);
/*
:: Presentación de resultados en la página ::
*/
echo "<b>Visitas desde 23/02/2005:</b> <font color=red>$totales</font>
| <b>Visitas hoy:</b> <font color=blue>$hoy</font> |
<b>Online:</b> <font color=red>$current_visitors</font>
<b>visitantes</b>";
mysql_close ($db);
?> |
Para crear las tablas en tu servidor de base de datos debes
generar una consulta SQL (¿con phpMyAdmin?) con los datos
siguientes:
|
#
# Estructura de tabla para la tabla `current_users`
#
CREATE TABLE `current_users` (
`ip` varchar(30) NOT NULL default '',
`time` varchar(30) NOT NULL default ''
) TYPE=MyISAM;
#
--------------------------------------------------------
#
# Estructura de tabla para la tabla `visitas`
#
CREATE TABLE `visitas` (
`dia` int(2) unsigned default NULL,
`totales` int(7) unsigned default NULL,
`hoy` int(5) unsigned default NULL
) TYPE=MyISAM;
#
# Volcar la base de datos para la tabla `visitas`
#
INSERT INTO `visitas` VALUES (23, 1, 1); |
¿Cómo implementarlo? Sólo habrá que incluir en cada página del
sitio, en el lugar que consideremos oportuno, el siguiente
código (cambiando /home/sitio/counter por la ruta
adecuada):
|
<?php include (“/home/sitio/counter/conta_user.php”);
?> |
Cada vez que es llamado el script se llevan a cabo los
pasos siguientes:
- Se comprueba si el día registrado en la BD coincide
con el del servidor. Si no coincide, se pone a cero el
contador diario. Si coincide, se incrementa en una
unidad el contador.
- Se incrementa en una unidad el contador total.
- Se verifica la IP del visitante. Si está en la tabla
current_users, no se incrementa en uno el número
de usuarios online; en caso contrario se suma uno al
total de usuarios activos en el sitio. Por defecto se
cuentan visitantes de los 30 últimos minutos:
$time2=$server_time-1800
Puedes descargar el script y el generador de las tablas en
Conta - Online. |