Una Newsletter è l’insieme di informazioni relative a una macrocategoria periodicamente inviata per posta elettronica, colui che si iscrive riceverà queste informazioni e potrà cancellarsi in qualsiasi momento.
Come creare e gestire una Newsletter in Flash, salvando gli iscritti su un database con la possibilità, qualora l’iscritto voglia, di cancellarsi?
Bella domanda
Ovviamente Flash deve appoggiarsi a un linguaggio dinamico esterno, come in questo caso il PHP.
Ecco i file che andremo ad analizzare, e come al solito vi ricordo, che al fondo dell’articolo troverete i file sorgenti:
Procediamo per ordine:
ecco la query, creo la tabella newsletter con un campo email di tipo varchar di dimensioni 100 per sicurezza
CREATE TABLE `newsletter` (
`email` varchar(100) NOT NULL default '',
PRIMARY KEY (`email`)
)
Creata la tabella nel database andiamo a creare il file di connessione, che ci permetterà di interagire con il database
connessione.php
$host = 'localhost'; //nome dell'host su cui risiede il database
$user = 'nome utente'; //nome utente con cui connettersi al database
$password = 'password'; //password utente con cui connettersi al database
$database = 'nomedatabase'; //indicare il database cui connettersi
$db = mysql_connect($host, $user, $password) ||die("Impossibile connettersi al server $host");
mysql_select_db($database, $db)||die("Impossibile connettersi al database $database");
Il nome del Database in questo caso è my_juliuswebdesign
newsletter.fla
primo frame
//per sicurezza cancello tutti i contenuti appena avviato
error = "";
msg = "";
email = "";
Creo un movie clip di nome istanza error per gestire gli errori
//Eseguo Debug sulla mail
onClipEvent (enterFrame) {
if (_root.error == "invalid email") {
_root.msg = "Email non valida";
}
if (_root.error == "invalid email delete") {
_root.msg = "Email non valida";
}
if (_root.error == "email delete") {
_root.msg = "Email Cancellata!";
}
if (_root.error == "duplicate email") {
_root.msg = "Email duplicata";
}
if (_root.status == "ok") {
_root.msg = "Email aggiunta!";
}
}
Sul pulsante Iscriviti
//Invio la mail tramite GET al file subscribe.php
on (release) {
error = "";
loadVariablesNum("subscribe.php?email="+_root.email, 0, "GET");
}
Sul pulsante Cancellati
//Invio la mail tramite GET al file deleted.php per eliminarla
on (release) {
if (email != "") {
loadVariablesNum("deleted.php?email="+_root.email, 0, "GET");
error = "";
email = "";
} else {
msg = "Email non inserita!";
}
}
Andiamo a vedere i files php
Iniziamo con subscrive.php che verificherà l’inserimento corretto della mail e invierà la conferma di iscrizione alla casella postale.
<?php
include('connessione.php');
//controllo se la email è valida
if (!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$", $_GET["email"]))
{
print "error=invalid email";
die();
}
//mi creo un file di testo per effettuare in seguito il debug
$fp = fopen("debug.txt", "r");
$content = fread($fp, filesize("emails.txt"));
fclose($fp);
if (eregi($email, $content))
{
print "error=duplicate email";
die();
}
$fp = fopen("debug.txt", "a+");
if (fwrite($fp, "".$_GET["email"]."\n"))
print "status=ok";
$email=$_GET["email"];
//inserisco nel database la mail corretta
mysql_query("INSERT INTO newsletter (email) VALUES ('$email')") or die(mysql_error());
//invio un mesaggio ($messaggio) alla casella di posta per confermare l'iscrizione
$messaggio="Grazie per esserti iscritto alla Newsletter di Julius!";
$result = mail( $email, "Iscrizione alla Newsletter", $messaggio );
fclose($fp);
?>
deleted.php cancella la mail inserita dopo aver verificato la validità, avvertendoti di avvenuta cancellazione sulla casella di posta.
<?php
include('connessione.php');
$email=$_GET["email"];
//controllo se la email è valida
if (!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$", $_GET["email"]))
{
print "error=invalid email delete";
die();
}
print "error=email delete";
//cancello la email passata tramite GET
mysql_query("Delete From newsletter where email ='$email'") or die ("non trovo la tabella");
//invio un mesaggio ($messaggio) alla casella di posta per confermare la cancellazione
$messaggio="Come da te richiesto, sei stato cancellato dalla Newsletter di Julius!";
$result = mail( $email, "Cancellazione alla Newsletter", $messaggio );
?>
Ora per visualizzare tutte le emails iscritte alla Newsletter ci basterà stampare il contenuto della tabella newsltetter all’interno del database.
Notate bene, ce una variabile $tuamail che dovrà essere impostata con una vostra mail, al fine di poter avere un controllo sulla effettiva partenza delle vostre newsletter, inviandoci a noi stessi la stessa.
emails.php
<?php
include('connessione.php');
$tuamail=tuamail@gmail.com; //inserire la propria mail, in questo modo potrai controllare l'effettivo invio delle tue newsletter in quanto le riceverai tu stesso
//Entro nel database nella tabella newsletter e stampo tutte le email in ordine crescente
$risultato=mysql_query("Select* from newsletter ORDER BY `email` ASC ") or die ("non trovo la tabella");
echo"$tuamail";
$numRecord=mysql_num_rows($risultato);
if($numRecord!=0){
while($record=mysql_fetch_array($risultato)){
echo ";".$record['email'].""; //aggiungo una virgola per separare le emails
}
}
?>
Scarica il sorgente
Guarda il Tutorial
ABC, Cinema, Database, Design, Flash, HTML, Newsletter, PHP, Sviluppo, Tutorial

Pagine: « 1 [2] Mostra tutto
Pagine: « 1 [2] Mostra tutto
tag abilitati: <code> </code> | <a href=""> </a> | <b> </b> | <i> </i>
Iscriviti ai Feed RSS dei commenti di questo articolo
forumauro
21 gennaio 2010
Ho lo stesso identico problema di Marco eppure sono 5 giorni che ci giro intorno. Mi crea il file db.txt e se lo scarico sul pc e lo apro ci sono dentro le mail registrate però non mi arriva nessuna notifica e se premo su emails.php mi compare
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /web/htdocs/www.dgmassistance.it/home/emails.php on line 4
non trovo la tabella
MICHELE
6 febbraio 2010
non funziona nemmeno a me, il server è giusto ma quando scrivo l’email e invio non mi compare nulla e sul server non scrive niente, scrive solo sul flie debug! AIUTO!!!!!!!!!!!