Sistema para controlar visualizaciones de Boletines o Newsletter

Sistema para controlar visualizaciones de Boletines o Newsletter

Fecha: 31-Jul-2009 | Autor: .
Guardado en: Códigos, Tutoriales PHP

El otro día tuve que realizar un pequeño script que permitiece guardar logs (registros) de qué usuarios recibían y abrían un boletín o email promocional que se enviaría a una gran base de suscriptores.

La que creo es la mejor opción, aunque por supuesto me encantaría escuchar otras opiniones, es incluir en el HTML del boletín una imágen de 1x1px que llame en el src=”…” a un archivo PHP, por ejemplo logs.php

De modo que el HTML nos quedaría de la siguiente forma:

<html>
<head>
...
</head>
<body>
<img src="ruta/logs.php?email=email@correo.com" alt="" width="1" height="1" />
<!-- Resto del contenido HTML del boletín -->
</body>
</html>

En el PHP lo que deberíamos hacer, sería: guardar en la BBDD el dato de que el correo email@correo.com ha abierto el email el día XX y hora YY (correspondiente al día-hora de ese momento) y luego crear una imagen vacía de 1×1 píxels para que la imagen no de error al mostrarse ;)


¿Por qué este anuncio?

Para guardar los datos debemos usar algo así:

$link=mysql_connect('HOST','USUARIO','PASSWORD');
mysql_select_db('BBDD');
 
// Chequeamos...
$sql = 'SELECT * FROM 'TABLA' WHERE email = "'.$_GET['email'].'"';
$pedido = mysql_query($sql);
$resultado = mysql_fetch_array($pedido);
$id = $resultado['id'];
 
if($id == ""){ // Si no existe, creamos el registro
$sql = "INSERT INTO 'TABLA' (`email` ,`fecha` ,`veces`) VALUES ('".$_GET['email']."', NOW(), 1);";
mysql_db_query('BBDD',$sql);
}else{ // Si ya existe, aumentamos la cant. de veces
$sql = "UPDATE 'TABLA' SET `email` = '".$_GET['email']."', `fecha` = NOW(), `veces` = veces+1 WHERE id = ".$id;
mysql_db_query('BBDD',$sql);
}

Y luego para crear y mostrar la imágen:

$im = imagecreatetruecolor(1, 1); // creamos una imágen de 1x1
header('Content-type: image/jpeg'); // definimos la cabecera
imagejpeg($im, NULL, 100); // muestra la imagen
imagedestroy($im); // y por último la destruye para liberar la memoria

¿Qué opinas? ¿Crees que es una buena forma de loggear las aperturas de un boletín o email? ¿Se te ocurre alguna idea mejor? Compártela! :)


Si te gustó, comparte:
Y si fue de ayuda, puedes comprarme un café:
...ó la cena si quieres! ;)

Etiquetado como: , , , ,


Gravatar

Marcelo


Desarrollador web, trabajando desde Montevideo, Uruguay para todo el mundo. Me especializo en Diseño web, Maquetación HTML5 & CSS3, jQuery y Programación PHP & MySQL, e intento aprender un poco más cada día.

3 comentarios, participa!

  1. eny

    06. Jul, 2010

    De antemano gracias por compartir tus conocimientos, oye sabes que he probado el código y me la creación de la imagen me da un problema, se vuelve a hacer un update en la base de datos, si quito la creación de la imagen inserta un valor normalmente, si dejo la creación de la imagen, me coloca 2 valores en la bd. Que podrá ser??, gracias de nuevo.

  2. Nicho

    20. Mar, 2011

    Que buena idea me has dado, ni me imaginaba como hacerlo, gracias!!!

  3. rosa

    11. Jul, 2011

    hola estoy por graduarme y mi proyecto tiene que ver con examenes de admision en los colegios tengo algunos problemitas tu podrias colaborarme ???

Deja tu opinión