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 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:
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.
Nicho
20. mar, 2011
Que buena idea me has dado, ni me imaginaba como hacerlo, gracias!!!
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 ???