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! :)