InicioLinuxTrackeando visitas usando fopen + gz + PHPMailer

Trackeando visitas usando fopen + gz + PHPMailer

Linux9/3/2011
En el Capítulo anterior: "" les enseñaba a trackear las visitas con unas líneas en PHP, ahora en esta entrega les voy a enseñar como purgar esos logs cuando alcancen una capacidad de 1Mb y al mismo tiempo enviarnos una copia del backup en formato de compresión gz a nuestro email valiéndonos de la líbreria PHPMailer la cual se readapto para que funcione con PHP 5 o superior.

Para cumplir con este objetivo el script anterior se modificó agregándole unas cuantas líneas adicionales, no por ello es significativamente mas extenso.

Veamos:


Vamos a necesitar 3 archivos para trabajar

1) visitas.txt (permisos 755, donde vamos a ir guardando a modo de base de datos los logs osea las visitas a la pagina)
2) class.phpmailer.php (la libreria PHPMailer propiamente dicho, para poder enviarnos el archivo comprimido como adjunto)
3) mylog.php (nuestro script php para trackear las visitas)

Para ser un poco más prolijos vamos a incorporar con un include('mylog.php'); en la página que vamos a trackear

(A pie del post les dejo el script para que puedan bajarlo)

<?php
error_reporting(0);
require_once('class.phpmailer.php');

function getRealIpAddr() {
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip=$_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}else{
$ip=$_SERVER['REMOTE_ADDR'];
}
return $ip;
}

function iComprimir($sFichOrigen, $iNivelComp = 8){

$sFichDetino = $sFichOrigen.".gz";

if ( ! $fOrigen = @fopen($sFichOrigen, "rb" ) )
return false;
$sOriBin = fread( $fOrigen, filesize($sFichOrigen) ) ;
fclose($fOrigen);

$sDesGZ = gzencode( $sOriBin, $iNivelComp ) ;

if ( ! $fDestino = @fopen ($sFichDetino, "wb" ) )
return false;
fwrite($fDestino, $sDesGZ ) ;
fclose($fDestino);

return true;

}

// Genero el log

$NombreArchivo='visitas.txt';

date_default_timezone_set('America/Argentina/Buenos_Aires');//seteo para que me de la fecha de mi pais
$fecha = date("d M Y H:i:s" ) ;
$refer = $_SERVER['HTTP_REFERER'];
$consulta = $_SERVER['QUERY_STRING'];
$browser = $_SERVER['HTTP_USER_AGENT'];
$ruri = $_SERVER['REQUEST_URI'];

$fh=fopen($NombreArchivo,"a+" ) ;// a+ hago un append para no machacar datos
$ip=getRealIpAddr () ;
fputs($fh,"$fecha|$ip|$refer|$consulta|$browser|$rurin" ) ;
fclose( $fh ) ;

// Compruebo el tamaño del fichero si es mayor o igual a 1Mb lo comprimo,purgo y lo adjunto por email


$fsize=1048576;// 1 mb expresado en bytes

$k=filesize($NombreArchivo ) ;

if($k>=$fsize){
if (iComprimir ($NombreArchivo, 9))
{
$f=fopen($NombreArchivo,"w" ) ;fclose( $f ) ;//purgo el fichero


// envio por email el log comprimido como adjunto usando la clase PHPMailer

$mail = new PHPMailer(); // defaults to using php "mail()"
$body = "<b>Tu log file!.</b>";
$body = preg_replace("[//]",'',$body ) ;

$mail->AddReplyTo("[email protected]","Logs Bck" ) ;
$mail->SetFrom('[email protected]', 'Logs Bck' ) ;
$address = "[email protected]";
$mail->AddAddress($address, "Tu nombre o pagina" ) ;
$mail->Subject = "Log de tu pagina";
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
$mail->MsgHTML( $body ) ;
$mail->AddAttachment("$NombreArchivo.gz" ) ; // attachment
if(!$mail->Send()) {
//echo "Mailer Error: " . $mail->ErrorInfo;
} else {
//echo "Message sent!";}
$bck = "bck-".date("dMYHis" ) .".txt.gz" ;
rename ("$NombreArchivo.gz",$bck ) ;
}

}

}

?>


Cabe aclarar que en la próxima visita a la página donde este el script cuando el log visitas.txt alcance el tamaño de 1 Mb automáticamente va a comprimirse en gz, "limpiar" visitas.txt y enviar el log comprimido por email dejando una copia con nombre de archivo tipo fechahora por si ocurre algun error siempre quedara la copia en el server que luego la podemos borrar manualmente desde nuestro FTP.

El script esta autoexplicado, pueden mejorarlo como les guste
y bajarlo completo desde este link

Sitio con el articulo y descarga

Si tienen dificultades para bajarlo envienme MP y les envio el rar con el script

pd. sepan disculpar si cometi algunos errores en la redacción del post, cualquier cosa haganmelo saber
saludos a todos y gracias por leer!!!

Artículo anterior donde explico como trackear visitas facilmente
Datos archivados del Taringa! original
1puntos
609visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
3visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

c
Usuario
Puntos0
Posts79
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.