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