Crear un Contador de Accesos a un
Sitio Web en Perl
Christian Gustavo Riva
A traves del siguiente codigo
veras como puedes hacer muy facilmente un contador que registre el acceso
a tu sitio, y que no cuente mas de una vez a un mismo usuario si este presiona
Actualizar repetidas veces.
Para implementarlo deberas
generar el archivo contador.pl con el codigo listado, copiarlo a tu FTP
y asignarle los permisos correspondientes de ejecucion, y luego utiliza
el siguiente codigo SSI en tus paginas:
<!--#include
file="ruta_del_script/contador.pl"-->
Recuerda que el codigo es
para uso libre y su finalidad es introducirte en los conceptos que trata
y animarte a que experimentes por tu cuenta.
Codigo:
###################################
# (C) 2001
Christian Gustavo Riva #
# https://www.programasprogramacion.com
#
###################################
#!/usr/bin/perl
## Requerido
para servidores Unix/Linux unicamente.
use strict;
## Nos obligamos
a tener que declarar todas las variables
## antes de
utilizarlas. Si bien el codigo es muy breve, nos
## ayuda a
no tipear nombre de variables incorrectamente
## y a no
crear mas variables de las necesarias.
my $visible
= 1;
## Esta variable
nos permitira mas adelante mostrar o no el
## resultado
del contador al usuario. Si queremos que no se
## visualice
el numero de visitas (pero si se cuenten)
## deberiamos
darle valor 0 (cero).
my $fuente
= "Verdana";
my $tamano
= "2";
## Nombre
y Tamaño de la fuente con la cual visualizaremos
## en la pagina
el resultado del contador.
my $ip = $ENV{"REMOTE_ADDR"};
## Tomamos
la direccion IP del cliente desde la variable de
## entorno
REMOTE_ADDR.
if(!$ip) {
$ip = $ENV{"REMOTE_HOST"}; }
## ¿No
hay datos del IP? Entonces tomamos el host del
## cliente
desde la variable REMOTE_HOST.
print "Content-type:
text/html\n\n";
## Le enviamos
al cliente el tipo de datos que le devolvera nuestro
## script.
En este caso codigo html.
if( ! -e "contador.dat"
) { open( FP, ">contador.dat" ); close(FP); }
## ¿No
existe ningun contador aun? Entonces lo creamos.
if( open( FP,
"+<contador.dat" ) )
## Si podemos
abrir el archivo CONTADOR.DAT, entonces hacerlo en
## modo lectura(<)
y escritura(+).
{
flock( FP,
2 );
## Una vez
abierto el archivo lo protegemos para que otra copia del
## script
no pueda alterar su contenido mientras lo actualizamos.
my $contador
= <FP>;
my $ultimo_ip
= <FP>;
## Cargamos
las variables $contador y $ultimo_ip con el contenido
## de las
dos primeras lineas de nuestro archivo.
if($ultimo_ip
!~ /$ip/)
{
## ¿La
direccion IP del ultimo usuario es la direccion IP del usuario
## actual?
Si no, registramos el acceso y recordamos (grabamos)
## la direccion
IP de este usuario. De esta forma evitamos contar
## mas de
una vez a un mismo usuario que presione Actualizacion
## repetidas
veces en su navegador.
seek( FP, 0,
0 );
print FP ++$contador."\n".$ip;
## Nos posicionamos
al inicio del archivo (recuerda que lo abrimos
## para lectura
y escritura!) y grabamos el nuevo acceso y la
## direccion
IP del usuario actual.
}
close(FP);
if($visible)
{
print "<font
face=$fuente size=$tamano><b>$contador</b></font>";
}
## Cerramos
el archivo y si le indicamos que muestre el contador al
## usuario,
generara el codigo html.
}