Autor Christian
Gustavo
Riva http://cgrsoftware.com
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 #
# http://www.cgrsoftware.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.
}