Hola, estuve viendo su contador de perl y otros más, inclusive estuve tratando de enterder el codigo de AWStats, he conseguido que guarde el numero de IP, el navegador, el Host y la fecha y hora.
Pero aún no he podido saber exactamente como incluir en mi archivo.dat, el nombre de los links internos, es decir, todos los .pl, imagenes, html que utiliza mi pagina u otras paginas de las cuales manejo.
aqui les dejo mi .PL.. como dije funciona guarda realiza el conteno de las visitas a la pagina principal.. pero de allí no pasa no cuenta si el usuario visita otro link...
es primera vez que manejo esta área en Perl, siempre he trabajado en el área interna, no se manejar el área externa de la web, es decir lo que hacen los visitantes al entrar a la misma..
me gustaria su ayuda gracias...
Nota: este .pl es para guardar.. existe otro que mostrará en eso estoy más entrenada ya que es un uso interno de cada usuario para ver la estadisticas de su respectiva pagina y pues esa es mi área el manejo de la base de datos y mostrar su contenido
#!/usr/bin/perl
print "Content-type: text/html\nPragma: no cache\n\n";
use CGI;
$req = new CGI;
$listado = $req->param("listado"); # aqui estan todos los enlaces de las paginas que manejo, ejemplo www.800guia.com/ansa
$volumen = $req->param("volumen");
$linkimg = $req->param("linkimg");
$mostrar_fecha = $req->param("mostrar_fecha");
$mostrar_banner = $req->param("mostrar_banner");
$vermenu = $req->param("vermenu");
@campos=("codigo","empresa","direccion","tlf","fax","email","www","colortexto","filter","colorlink","nosotros","claves","contacto","gerente","vendedor") # corte los campos son muchos y daña para mostrar la información
@colordef=("colorbanda","colortexto","colorlink","colorfondo","colortitulo","colorbotones");
@colorval=("eeeeee","black","green","white","navy","blue");
$codigo=$listado;
$archivo="../db/guia/empresas.dat";
open (DATOS, "$archivo") || &Error ($!, "$archivo");
while($linea=<DATOS>){
chop $linea;
@matriz=split("\t",$linea);
$cod=$matriz[0];
if ($cod eq $codigo){
$x=0;
foreach $item (@campos){
$$item=$matriz[$x];
$x++;
}
$x=0;
foreach $item (@colordef){
if ($$item eq ""){
$nam=$colorval[$x];
$$item=$nam;
}
$x++;
}
$claro="CCCCCC";
$oscuro="555555";
close DATOS;
}
}
close DATOS;
$ip = $ENV{'REMOTE_ADDR'};
$browser = $ENV{'HTTP_USER_AGENT'};
#$plboton = $ENV{'SCRIPT_ NAME'}; no lee el .pl, es decir, no hace NADA
$user = $ENV{'REMOTE_USER'};
$id = $ENV{'REMOTE_IDENT'};
$archivo_estadistica="../db/$listado/estadistica.dat";# Aqui guardo la información de las visitas.
my ($ip_address,$ip_number,@numbers);
if ($ENV{'REMOTE_HOST'}) {
$host = $ENV{'REMOTE_HOST'};
} else {
$ip_address = $ENV{'REMOTE_ADDR'};
@numbers = split(/\./, $ip_address);
$ip_number = pack("C4", @numbers);
$host = (gethostbyaddr($ip_number, 2))[0];
}
if ($host eq "") {
$host = "$ENV{'REMOTE_ADDR'}";
}
if ($plboton ne ""){
$botones=$plboton;
}
if ($id ne ""){
$idcont=$id;
}
if ($browser ne ""){
$browcont=$browser;
}
if ($user ne ""){
$usercont=$user;
}
if ($ip ne ""){
$ipcont=$ip;
}
$fecha=&Fecha;
$archivo_contador="../db/$listado/contestad.dat";
if (-e $archivo_estadistica){
open (TEMPORAL, "$archivo_estadistica") || &Error ($!, "$archivo_estadistica");
@mat=<TEMPORAL>;
close TEMPORAL; # esto es para que cuando incluya una nueva visita, quede guardado la información anterior.
}
if (-e $archivo_contador){
open (CONTADOR, "$archivo_contador") || &Error ($!, "$archivo_contador");
@numero=<CONTADOR>;
$contador=$numero[0]+1;
close CONTADOR;
open (CONTADOR, ">$archivo_contador") || &Error ($!, "$archivo_contador");
print CONTADOR "$contador";
close CONTADOR;
}else{
open (CONTADOR, ">$archivo_contador") || &Error ($!, "$archivo_contador");
print CONTADOR "1";
close CONTADOR;
}
open (ESTADISTICA, ">$archivo_estadistica") || &Error ($!, "$archivo_estadistica"); # se borra el archivo se incluye la nueva visita y luego se pega el archivo temporal para que esten debajo de la nueva los demás, de esa manera siempre el primer archivo sera el ultimo visto ordenado de manera descendete.
print ESTADISTICA "$contador\t"; # sirve, guarda el numero de visita
print ESTADISTICA "$ipcont\t"; # sirve, muestra el ip
print ESTADISTICA "$botones\t"; # no hace nada
print ESTADISTICA "$imageurl\t"; # mucho menos que nada , debería mostrarme el archivo donde se encuentra la imagen, si me ayudan en esto no me quejaria
print ESTADISTICA "$browcont\t"; # sirve, muestra el navegador utilizado y el sistema operativo
print ESTADISTICA "$idcont\t"; # no hace nada
print ESTADISTICA "$host\t"; # sirve, muestra el ip junto al host
print ESTADISTICA "$fecha\n"; # sirve, aunque esta atrasado por una hora
print ESTADISTICA @mat;
close ESTADISTICA;
exit 0;
#==========================================================================
# Funcion Obtener la fecha y la hora del servidor
#==========================================================================
sub Fecha {
@days = ('Domingo','Lunes','Martes','Miercoles','Jueves','Viernes','Sabado');
@months = ('Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre');
($sec,$min,$hour,$mday,$mon,$year,$wday) = (localtime(time))[0,1,2,3,4,5,6];
local ($ampm) ;
if ($hour > 12) {
$hour -= 12 ;
$ampm = 'pm';
}else{
$ampm = 'am'
}
$hora = sprintf("%02d:%02d",$hour,$min);
$time = "$hora $ampm";
$year += 1900;
$date = "$days[$wday] $mday de $months[$mon], $year - $hora $ampm";
return ("$date");
}
#==========================================================================
# funcion Error de archivo
#==========================================================================
sub Error{
print "Archivo: $_[1] / Error: $_[0]";
exit;
}
#===============================================================================
sub Banner{
#===============================================================================
$arch="../db/guia/empresas.dat";
open (BANNER, "$arch") || &Error ($!, "$arch");
while ($lin=<BANNER>){
@mat=split("\t",$lin);
$nom=$mat[0];
$fil=$mat[8];
$img="../imagenes/$nom-banner.gif";
if (-e $img){
if ($filtro eq ""){$fil="";}
if ($filtro eq $fil){
push (@banners,"$nom-$fil");
}
}
}
close BANNER;
$n=@banners;
$num=int(rand($n));
$cad=$banners[$num];
@cam=split("-",$cad);
$nom=$cam[0];
$fil=$cam[1];
$img="../imagenes/$nom-banner.gif";
print "<center><a href=\"/cgi-bin/guiaview.pl?codigo=$nom\&filtro=$fil\">";
print "<img src=\"$img\" border=1>";
print "</a></center>\n";
}
#==========================================================================
sub Mensaje{
#==========================================================================
$mensaje=$_[0];
$accion=$_[1];
print "<FORM ACTION=\"$ENV{'SCRIPT_NAME'}\" method=POST\>\n";
print "<input type=hidden name=listado value=\"$listado\">\n";
print "<table border=2 cellpadding=5 cellspacing=5 width=80% bgcolor=\"$colorbanda\"><tr>\n";
print "<td align=center bgcolor=$colortitulo><STRONG><font color=\"$colorfondo\">Información del Sistema</font></strong>\n";
print "</td></tr><tr>\n";
print "<td align=center bgcolor=\"$colorfondo\">$mensaje\n";
# print "<br><br><input type=submit value=Regresar>\n";
print "</td></tr></table>\n";
print "</form>\n";
exit;
}