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:

  • connessione.php connessione al Database
  • newsletter.fla sorgente flash della Newsletter
  • subscribe.php iscrizione dell’utente tramite mail
  • deleted.php  cancellazione dell’utente tramite mail
  • emails.php visualizzazione delle emails totali iscritte
  • debug.txt è un file di testo che noi non dovremo utilizzare, verrà preso in considerazione solo per il debug

Procediamo per ordine:

  • Creiamo la tabella newsletter su un nostro Database MySQL

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

  • Ora andiamo ad analizzare il file sorgente della Newsletter

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