Comunidad de diseño web y desarrollo en internet online

Boletín de noticias por correo con Flash, PHP y MySQL

¿Por que buscar informacion si nos la pueden traer a casa? ¿Acaso no sera mejor para nuestros asiduos fans tener un 'newsletter' (Lista de correo) para nuestro sitio web? Asi ellos se actualizaran a la vez que nosotros!.

Crearemos un sistema donde daremos de alta a nuestros usuarios (Previa confirmación); evitaremos que haya dos emails repetidos y que registren un email sin permiso (Para evitar el spam); en el moemnto de las actualizaciones,se las enviaremos a todos los registrados.

La interfaz

En Flash tendremos un campo de texto llamado "email" y un boton "boton" este sera solo el codigo necesario, para hacer una minima comprobacion del email [si es valido o no] y mostrar la informacion referente.

/*esta funcion siempre esta bien, comprueba el texto que hay en el campo y si es
el que viene por defecto, al hacer click se borra automaticamente. Cualquier
facilidad al usuario es poca */

email.onSetFocus = function() {
if (email.text == "Introduce tu email...") {
email.text = "";
}
};
boton.onRelease = function() {
/*validacion basica de todo email, la @ el punto y la longitud minima*/
if (email.text.indexOf("@") == -1 || email.text.indexOf(".") == -1 ||
email.text.length<6) {
email.text = "Introduce un email valido";
} else {
//creamos unos loadVars
delete em;
em = new LoadVars();
em.email = email.text;
//avisamos al usuario de que estamos haciendo cosillas
email.text = "Enviando la informacion";
//este sera el output que nos de el resultado de la operacion
em.onLoad = function() {
email.text = em.resultado;
};
//llamamos al php
em.sendAndLoad("mailme.php", em, "POST");
}
};
Sencillo por el momento ¿no? Ahora vayamos al mailme.php..... para evitar todo el SPAM [like 'Enlarge your P3N3' MWHAHAHAHA] tendremos que hacer un par de cosillas, la primera sera enviar un email de confirmacion al usuario con una clave-aunque el no lo sepa-, y un link para confirmar pero antes guardaremos sus datos en una DB [MWHAHAHAHA como los buenos spammers] Un par de cosillas a tener en cuenta, un archivo "localconex.php" que nos servira para hacer la conexion sql, lo tendremos separado pues lo usaremos en todos nuestros PHP que requieran de esa conexion, tambien una tabla en sql, ambos codigos los pego aqui.
# INSTRUCCIONES SQL DE CREACIÓN DE LA TABLA
CREATE TABLE `mailsender` (
`id` int(11) NOT NULL auto_increment,
`mail` text,
`fecha` text,
`confi` int(11) default '0',
`activa` int(11) default '0',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=7 ;
localconex.php
<?php
function Conectarse()
{
if (!($link=mysql_connect("tuServidor","tuUsuario","tuPassword")))
{
echo "Error conectando a la base de datos.";
exit();
}
return $link;
}
?>

Obviamente, debes cambiar "tuServidor", "tuUsuario", "tuPassword"; por tus propios datos en el servidor MySQL que estes usando, o no funcionara (Si no sabes que poner ahi, necesitaras primero aprender las bases MySQL y PHP antes de continuar)

Ahora si que podemos ir directamente a nuestro PRIMER ARCHIVOPHP.

mailme.php

<?
//esta es nuestra clave secreta
$rcon = rand(1000000,10000000);
//esto es un simple mensaje
$sms = 'Estas recibiendo este e-mail de confirmacion a la subcripcion a las notificaciones de las nuevas entradas al Blog de NODANI.com, Si usted no ha deseado subscribirse y recibe este e-mail le pedimos mil disculpas.<br><br><b>Para confirmar su autorizacion pulse este link :</b><br> <a href="http://www.nodani.com/sublog.php?email='.$email.'&shoebox='.$rcon. '&DummyText=Ar9834FT5d5td%dxtsev7">CONFIRME SU SUBSCRIPCION</a> <br><br>El email facilitado en ningun caso se facilitara a terceros ni se utilizara con fines propagandisticos y publicitarios [SPAM] solo y unicamente para las notificaciones antes dichas.';
//
//nos conectamos

include("localconex.php");
$link=Conectarse();
$fechoria=date("d/m/Y - H:i");
//recogemos los datos -por si ya estaba el email //No olvides cambiar "data_base" por el nombre de la //base de datos donde creaste la tabla de arriba
$result=mysql_fetch_array(mysql_db_query("data_base","SELECT * FROM mailsender WHERE mail='$email'"));
print 'activate'.$result['activa'];
//
//si no devuelve nada es que no esta!! Lo añadiremos

if($result['activa']=="") {$query=mysql_db_query("data_base", "insert into mailsender (mail,fecha,confi) values ('$email','$fechoria','$rcon')"); mysql_close($link);
//headers del mail
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: NODANI <[email protected]>\r\n";
$headers .= "Reply-To: [email protected]\r\n";
//enviamos el email
mail($email, 'Suscribete al Blog de NODANI.com', $sms,$headers);
print '&resultado=Se envio el email correctamente&nodani=.com';
//
} else if($result['activa']==0) {
//si es 0 es que el email esta en la DB pero aun sin confirmar
print '&resultado=ERROR: El email es usado por otro usuario&nodani=nodani.com';
} else {
/*en cualquier otro caso el email ya etara validado, asi que no haremos nada */
print '&resultado=ERROR: El email ya fue validado&nodani=nodani.com';
};
//
?>

Shock Shock FIJEMONOS en un par de cosillas ...
&resultado=XXx aja! esto es para que en el output de Flash salga la informacion correspondiente, se haya enviado bien, mal o que pasa!

Despues otro punto importante es nuestro link que le facilitamos...
href="http://www.vuestroDominio.com/sublog.php?email='.$email.'&shoebox='.$rcon.'&DummyText=Ar9834FT5d5td%dxtsev7"
Hay DOS variable "email" y "shoebox" [que es $rcon - NUESTRA CLAVE SECRETA!!] El porque de esto es sencillo, imaginense que no hay que ser muy listo para ver que en sublog.php?email=XXx ahi podrias poner emails a porrillo sin control alguno y asi joder a la gente, pues entonces cuando se mete un registro en la DB se le añade en el campo "confi" un numero aleatorio, que se le envia al email, despues comprobaremos que el email y el numero coinciden, el usuario no se da cuenta de esto y el es FELIz Muy Feliz Muy Feliz y nosotros tenemos un sistema mucho mas seguro BOFH Por ultimo el dummyText, que como su nombre indica no es mas que un texto [la verdad que no supe como hacerlo aleatorio] para darle mas calidad y disimular un poco nuestro truki del shoebox-rcon, el usuario dira "Coño, que seguridad, un pedazo de clave del quince!" y nos amara eternamente Amor Amor

Ahorita solo nos faltan DOS php, el primero sera el que se encargue de comprobar la confirmacion y hacer los cambios necesarios, el ultimo, el sistema de envio.

sublod.php

<?php
//nos conectamos
include "localconex.php";
Conectarse();
//
$fecha=date("Y-m-d H:i:s");
//recogemos los datos referentes al email
$result=mysql_fetch_array(mysql_db_query("data_base","SELECT * FROM mailsender WHERE mail='$email'"));
//
$rcon=$result['confi'];
$id=$result['id'];
//hacemos la comprobacion... si es igual....
if($rcon==$shoebox) {
$cantidad=1;
//cambiamos activa de 0 a 1 ! juas que makinones somos!
mysql_db_query("data_base","UPDATE mailsender SET activa=$cantidad WHERE id=$id");
//un output en pantalla para confirmarlo
print ' Se ha <b>agregado '.$email.' correctamente</b> a nuestra Base de Datos. Puede cerrar esta ventana';
//nos autoenviamos un email para saber que se ha añadido un nuevo luser! :|
mail('[email protected]', 'Suscripcion al Blog de NODANI.com', $email,"From:". ."[email protected]\nReply-To: ". "[email protected]\nX-Mailer: PHP/" . phpversion());
/*en caso contrario... no dudemos en increpar al usuario, ya toco algo que no debia!! :|:|*/
} else { print 'Oups! Estas haciendo algo ilegal!!<br>Contacte con [email protected] para solucionar su problema'; };
?>
Hasta aqui creo que mas o menos sencillito no? ya solo nos falta el ultimo paso.... CoolCool
Este es el codigo php que añadiremos en nuestra pagina donde dejamos los posts....
<?
/*recortamos la noticias, si la ponemos entera ya no tendran porque entrar en el blog, oh dios mio n0000000 */
$corto = substr ($cuerpo_noticia, 0,215);
/*creamos el mensaje y le añadiremos un link directo a nuestro blog */
$sms = 'Estas recibiendo este e-mail avisandote de que hay un nuevo tema en el Blog'. 'de NODANI.com <br><br>'.$n.'<br>'.$corto.'<a href="http://www.nodani.com/blog/index.php" > ... Leer Mas</a><br><br>Si ya no desea seguir recibiendo estos avisos, por favor indiquenoslo en [email protected]';
// los MIME headers
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: NODANI <[email protected]>\r\n";
$headers .= "Reply-To: [email protected]\r\n";
//como siempre nos conectamos
include("localconex.php");
$link=Conectarse();
//recogemos todo de la DB
$result=mysql_db_query("data_base","select * from mailsender where 'activa'=1");
while ($row=mysql_fetch_array($result))
{
$e=$row['mail'];
//envio del email
mail($e,'Nuevo Tema: '.$asunto,$sms,$headers);
}
mysql_close($link);
?>
Con eso enviara un email a todos aquellos que esten confirmados. Un sistema seguro que impide que hayan dos emails, que rse registren email sin permiso y demas. FACIL, SENCILLO y PARA TODA LA FAMILIA!! miau miau

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Descargar Archivo

Publica tu comentario

El autor de este artículo ha cerrado los comentarios. Si tienes preguntas o comentarios, puedes hacerlos en el foro

Entra al foro y participa en la discusión

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate