¡Ya estamos en Twitter!

Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad

Contador Web I

por Uriel Lizama

Introducción

Hay mucha gente a la que le gusta poner contadores en sus páginas web para mostrar la cantidad de visitas que ha tenido la página o el sitio en general.

Pero para poder poner un contador de esa manera debes de asegurarte de un par de cosas:

  • 1. Debes de asegurarte de que puedes ejecutar CGI's en tu servidor.
  • 2. Es necesario que tengas SSI, de otra manera no vas a poder.

Si estas seguro que tienes lo necesario entonces continuemos con el tutorial.

Primeros Pasos

Lo que vamos a hacer es un CGI que guarde el useragent de quien entro a visitar la página, después vamos a contar la cantidad de visitas que tenemos en ese momento, y finalmente vamos a desplegar el total.

Para hacer esto necesitamos el CGI y el archivo de texto en el que vamos a escribir los datos.

Mis Variables

Lo primero que vamos a hacer es inicializar la variable con el nombre del archivo que queremos escribir:

my $archivo = "visitas.txt";

Ahora, si alguna ves leiste el tutorial acerca de flock() que hay en el sitio, has de saber que es muy importante usarlo para evitar archivos corruptos. Pero como el flock() no es soportado por window vamos a inicializar una variable para saber si queremos usar flock.

my $usar_flock = 1; #poner en 0 si es windows

La siguiente variable que debemos de incializar es la que va a contener el identificador del navegador de la persona que esta viendo la página en ese momento:

my $user_agent = $ENV{'HTTP_USER_AGENT'};

Listo todas las variables que necesitamos inicializar ya estan disponibles.

Escribir, leer y desplegar

Nuestar primera acción es escribir el nuevo indentificador dentro del archivo:

open(FILE, ">>$archivo"); #abrir el archivo para escritura
flock(FILE, 2) if $usar_flock; #usar flock() si disponible
print FILE "$user_agent\n"; #escribir nueva entrada
close(FILE); #cerrar archivo

Listo, ya escribimos la nueva entrada, ahora lo que vamos a hacer es abrir el archivo y leer el número de lineas dentro de él:

open(FILE, "$archivo");
flock(FILE, 1) if $usar_flock;
my $visitas_totales = my @lineas = <FILE>; #leer lineas totales
close(FILE);

Listo ya escribimos la nueva entrada y leímos todas las visitas totales, ahora vamos a desplegar las visitas totales.

Si recuerdas en el tutorial de despliegue de HTML vimos que es necesario avisar que el contenido que sigue es código HTML, y eso lo hacemos con la siguiente linea:

print "Content-type: text/html\n\n";

Ya después de esta linea escribimos nuestro código HTML:

print "<b>Visitas totales:</b> $visitas_totales\n";

Muy bien ya tenemos nuestro CGI listo, ahora vamos a ver como lo ejecutamos desde nuestro HTML.

Los SSI

SSI son las siglas de "Server Side Includes", esto significa más o menos "cosas incluidas desde el servidor".

Dentro de los SSI que se pueden usar estan el "execute cgi" e "include virtual", normalmente cualquiera debe de funcionar para ejecutar cgis pero esto cambia dependiendo del sistema.

Entonces todo lo que hay que hacer es abrir nuestro .shtml e incluir donde queramos que se depliegue la linea del CGI cualquiera de las siguientes lineas:

<!--#include virtual="/ruta/al/contador.cgi"-->
<!--#exec cgi="/ruta/al/contador.cgi"-->



NOTA: Normalmente los SSI no se puden ejecutar desde los archivos con extensión .htm o .html, sino en HTMLs con extension .shtml. Si tienes duda preguntale al administrador de tu servicio de alojamiento.

Ya que hiciste todo esto debes de poner ejecutar tu contador sin ningun problema, y aparte vas a poder abrir el archivo de "visitas.txt" para ver que tipo de usuarios de visita.

Código Final

#!/usr/bin/perl -w

use strict;

my $archivo = "visitas.txt";
my $usar_flock = 1; #poner en 0 si es windows
my $user_agent = $ENV{'HTTP_USER_AGENT'};

open(FILE, ">>$archivo"); #abrir el archivo para escritura
flock(FILE, 2) if $usar_flock; #usar flock() si disponible
print FILE "$user_agent\n"; #escribir nueva entrada
close(FILE); #cerrar archivo

open(FILE, "$archivo");
flock(FILE, 1) if $usar_flock;
my $visitas_totales = my @lineas = <FILE>; #leer lineas totales
close(FILE);


print "Content-type: text/html\n\n";
print "<b>Visitas totales:</b> $visitas_totales\n";

exit(1);


¿Quiéres más tutoriales como este? Escribir tutoriales toma una gran cantidad de tiempo y esfuerzo. Si este tutorial te ayudó a aprender o a solucionar algo, por favor considera dejar alguna donación en apoyo a Perl en Español.

Cliquea en el botón de abajo para dejar tu donación por medio de PayPal.

Comparte:
Categorías de Tutoriales:
En Nuestros Foros:

    Software error:

    junk after document element at line 1, column 32, byte 32 at /usr/lib64/perl5/vendor_perl/XML/Parser.pm line 187.
    

    For help, please send mail to the webmaster ([email protected]), giving this error message and the time and date of the error.

  • Entra a los foros »
Socializa:
Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Perl en Español es mantenido con Movable Type
Todo el contenido de Perl en Español está bajo una licencia CC:
Creative Commons License