Sistema para controlar visualizaciones de Boletines o Newsletter

Sistema para controlar visualizaciones de Boletines o Newsletter

Fecha: 31-Jul-2009 | Autor: Marcelo.
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 1×1px 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:

1
2
3
4
5
6
7
8
9
<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 ;)

Para guardar los datos debemos usar algo así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$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:

1
2
3
4
$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ó este post, compártelo:
  • Meneame
  • Twitter
  • Facebook
  • Google Bookmarks
  • Live
  • del.icio.us
  • BarraPunto
  • Technorati
  • Bitacoras.com
Me gusta! A 2 lectores les ha gustado esta entrada.
Loading ... Loading ...

Etiquetado como: , , , ,

Gravatar

Marcelo Ferreiro


Desarrollador web: me especializo en Diseño web, Maquetación xHTML & CSS y Programación PHP & MySQL, e intento aprender un poco más cada día.

1 comentario, anímate y deja otro tú!

  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.

Deja tu opinión