Newsletter: Gestione in Flash

- Letture: 4.263

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

Stratega, Docente, Speaker con più di 12 anni di esperienza in strategie creative multicanale. Oggi sono Partner & Chief Innovation Officer di ThinkingHat, Innovation Studio specializzato in tecnologie emergenti per aziende e brand audaci.

54 Commenti

  1. Ho trovato molto interessante l’articolo, l’uso di php e flash è un campo molto allettante per poter fare molte cose.

    Ho constatato che non si riesce a inserire il carattere @ nella form, questo è un piccolo problema di flash…

    ciao,
    Gianni

  2. il problema è con il browser Firefox, e si riscontra nell’inserimento nella pagina newsletter.htm, ho avuto un problema del genere in passato ed ho aggiustato tutto con l’inserimento di “system.useCodepage;” all’inizio dell’actionscript

    ciao e di nuovo complimenti per questo utilissimo sito,
    Gianni

  3. @Gianni hai super raggione infatti mi ero dimenticato :)
    comunque altri modi per scavalcara questo problema è non pubblicare il filmato flash in modalità trasparent, incorporare i caratteri oppure digitare in FF SHIFT+2
    ciao

  4. sidvizioso

    il tuo esempio online funziona bene, mentre il sorgente scaricato non va, il tasto iscriviti non fa comparire nessun messaggio ma scrive l’email nel file debug.txt senza però inserire la mail nel DB…mentre il tasto cancellati fa comparire i vari messaggi ma non cancella l’e,mail dal file debug.txt.. ovviamente senza inviare nemmeno le mail di notifica… come posso risolvere? questo è un semplicisssssimo form se fosse solo in php ma ho la necessità in questo momento di farlo interagire con flash..spero mi potrai dare una mano…
    grazie

  5. sidvizioso

    scusami…funziona…l’unica cosa che non va è che non compare il messaggio che dice che una mail è già presente nel db…e spesso devo fare il refrewsh della pagina per ricomparire in modo corretto i messaggi…

  6. La funzione che ti avverte di avere gia inserito una mail funziona solo se la mail viene inserita succesivamente…

    Mentre se la mail viene inserita dopo un po di tempo, viene solo sovrascritta

  7. DanFlash

    Ciao Julius
    ho uno spazio su di un server con un solo database mysql.
    esiste la possibilità di una newsletter in flash che non utilizzi un database
    ma, ad esempio file di testo ?

  8. Ciao ho 1 problema l’iscrizione e la cancellazione funzionano benissimo solo 1 cosa nn ho capito :S come si fa ad inviare le Email a quelli iscritti? I’m a N00b :P

  9. francesco

    Hai ragione ma l’ultima discussione su questo tutorial risale al 29 agosto e allora ho guardato nella sezione messaggiamo e ho visto che ieri avevi risp. ad una ragazza, comunque ora lo so!!

    Ho modificato il file connessione.php, ho messo host user pass dbname ma mi da questo errore:
    Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource on line 7
    Impossibile connettersi al database Sql77757_4

  10. @DanFlash

    Il databse serve al fine di poter cancellare le mails che non aderiscono più, in un file di testo non è possibile individuare una data email e cancellarla tutto qui…

    @Jaso
    Qusta è una gestione di una Newsletter, ovvero vengono archiviate le mail, una volta lette le mail tu dovresti copiarle e inserirle nel campo destinatari di una tua casella di posta… inviare la news

    @francesco

    controlla di avere i permessi, avvolte la configurazione di database avviene attraverso la concessione di user e password

    dai uno sguardo qui

  11. perche io non riesco a farlo funzionare??
    premetto che sono un po inesperto di php,
    pero ho messo nomeutente e pass e il nome del data base sul file connesione
    e ho messo tutto su un dominio tripod.
    quando vado a mettere una email però non fa nulla dove sbaglio? devo aggiungere qualcosa????

    help me!

  12. Non fa nulla in che senso? nessun messaggio di corretto inserimento? Non ti inserisce la mail nel database?

  13. si esatto nessun messaggio di corretto inserimento e non mi scrive nulla nel data base

  14. Ciao julius intanto complimenti vivissimi sei un grande
    Cmq volevo chiederti ho dei dubbi chiarendoti ke nn sono un programmatore
    ma un grafico quindi ho molte lacune ke voglio colmare
    nel tuo tutorial sulla newsletter ho capito un po tutto
    ma una cosa nn mi è chiara (ti sembrera banale ma x me nn lo :-) )
    nel file di connessione
    ————————————
    $host = ‘localhost’; //nome dell’host su cui risiede il database
    ————————————
    non capisco si riferisce al mio ip oppure all’host (nel mio caso aruba)
    poi un ultimo dubbio i file vanno divisi in cartelle particolari del server del dominio?
    Grazie aspetto cn ansia tua risposta

  15. scusate ma qualcuno ci riesce a farlo funzionare su aruba???
    perche a me non va non so dove sbaglio metto il nome utente la pass il nome database ecc…

    help me please

  16. Pingback: Modulo per newsletter - Page 3 - Forum Flash CS3

  17. ciao Julius…
    con emails.php mi risulta sempre
    Impossibile connettersi al server localhost
    non ho capito veramente cosa mettere….le ho provate tutte
    il mio dominio è su solodomini.com
    il database funziona e vedo gli indirizzi tramite il pannello di controllo del dominio…please help :)

  18. hai mai usato il database del tuo dominio?

    Devi configurare la connessione del db con php controlla bene di aver inserito i dati

    Nelll’articolo ci sono dei link utili per configurare la connessione

  19. Julius grazie per la risposta…
    in realtà non capisco cosa intendi quando dici se ho usato il database…io l’ho creato con nome utente e password…ho creato la tabella newsletter
    ho solo aggiunto al file connessione.php altrimenti mi restituisce tutto il testo invece di eseguire il codice… e i dati sono corretti nel file connessione…boh

  20. Quanto dico “hai usato il database” vuol dire se hai usato l’interfaccia di MySql per creare la tabella in cui verranno inseriti i dati…

  21. con “ecco la query, creo la tabella newsletter con un campo email di tipo varchar di dimensioni 100 per sicurezza..” allora la prima volta seguendo questo ha dato errore e anche la seconda…quindi la tabella l’ho creata ma non così…in ogni caso ora so come usare il linguaggio sql per isolare il campo email…magari aggiungere anche un ; alla fine di ogni email e copiarmi tutto da un’altra parte…cmq grazie 1000 Julius i tuoi tutorials sono fantastici.ciao

  22. ciao julius ho lo stesso problema che già ti era stato segnalato ma non ho trovato risposta e non sono riuscito a risolverlo ti prego di aiutarmi . . . .

    il tuo esempio online funziona bene, mentre il sorgente scaricato non va, il tasto iscriviti non fa comparire nessun messaggio ma scrive l’email nel file debug.txt senza però inserire la mail nel DB…mentre il tasto cancellati fa comparire i vari messaggi ma non cancella l’e,mail dal file debug.txt.. ovviamente senza inviare nemmeno le mail di notifica… come posso risolvere? questo è un semplicisssssimo form se fosse solo in php ma ho la necessità in questo momento di farlo interagire con flash..spero mi potrai dare una mano…
    grazie

    Grazie mille
    Amedeo

  23. marchino

    Ma io l’avevo utilizzata per un progetto ora però non più online è non mi ha dato problemi..

    E’ probabile che hai problemi di configurazione con database MySQL

    Comunque se non hai bisogno di flash per creare questa newsletter ti propongo questi script

    Se cerchi con google “newsletter php” ne trovi molti altri

  24. scusate riscrivo il messaggio come dicevo è tutto ok e ho assolutissimamente bisogno di flash

    grazie mille

  25. ohi è tutto ok a livello di database e mysql ma continua non funzionare scusate ma sto in ufficio e nello sbrigarmi a scrivere non mi spiego bene

    grazie mille

  26. c’è qualcuno che può aiutarmiiiiiiiiiiiiiiiiiiiiiiiii . . . .pleaseeeeeeee

  27. ciao riesci a scrivermi un link del tuo progetto con la newsletter cosi provo a trovare eventuali errori :)

  28. Hai provato con un altro dominio?

    Ho notato che con il file subscribe.php è possibile visualizzare i dati del tuo database semplicemente inserendo l’indirizzo, è strano…

    PS: ti ho cancellato il link per motivi di privacy

  29. ciao julius…
    mi interesserebbe qst newsletter… ma nn ho capito… i parametri da inserire nel file connessione.php !!
    supponiamo ke io abbia il dominio http://www.esempio.it sul quale la cartella ‘newsletter’ nella quale vi è il sorgente….
    cosa devo mettere:
    in ‘localhost’?
    in ‘nome utente’?
    in’password’?
    in ‘nomedatabase’?
    dopo aver modificato qst 3 parametri.. devo fare altro?
    help me please! :D

  30. i file li carichi tutti insieme in un tuo spazio web

    per quanto riguarda la connessione al db devi usa uno spazio che ti permetta di gestire MySql…

    Dove viene descritto il file connessione trovi dei link utili…

  31. ciao
    come ti avevo già segnalato il 20 marzo continuo ad avere lo stesso problema nonostante abbia seguito il tuo consiglio di provare su un altro dominio . . .ottenendo lo stesso identico risultato compreso il fatto che in subscribe.php continuo a visualizzare i dati del mio database e constatato che non va ad inserire i dati nei campi della tabella mentre nel file debug.txt scrive regolarmente.

    grazie mille

  32. E’ molto strano! con quale dominio hai provato?

    Tanto per sfatare questo dilemma, vuoi provare con altervista.org? (è gratuito, fai una prova solo per verificare quale sia il problema)

  33. ciao,
    guarda io uso sempre tophost, ma non ha funzionato, ho provato con register.it ma idem, ora seguendo il tuo consiglio ho provato con altervista ma il risultato è identico. non c’è un modo per parlare direttamente con te in modo di risolvere il problema??

    Grazie Mille
    Amedeo

  34. Scusate l’intromissione, me per caso non è che i problemi derivino da dai permessi sulla cartella che contiene il db?
    mi è capitato di avere problemi simili, risolti setttando i diritti a 777.

    magari è una scemenza ma visto che nel mio caso cosiì ho risolto…

    ciao!

  35. marco l.

    Ciao Julius, bentornato.

    Premetto che non conosco Php e MySql.
    Ho un filmato flash con trasparenze in cui vorrei usare Php+MySql per newsletter, login e altro. Il sito è ospitato su Aruba e posso scegliere il puntamento tra due server Windows 2003 e Linux.
    Su server windows il filmato gira bene ma ho problemi di Php+Mysql (credo per una questione di permessi CHMOD che non riesco a cambiare, i file sono tutti 666, le cartelle 777, es. il file debug.txt non si genera).
    Su server linux il filmato si blocca sempre più o meno allo stesso punto. Php sembra funzionare, la connessione a MySql funziona ma non quella al database che contiene “newsletter”. Cliccando su “iscriviti” viene generato il debug.txt ma sullo schermo non succede niente, la mail digitata rimane li e non viene registrata nessuna informazione sulla tabella “newsletter”.
    Per semplificare ti faccio queste domande:
    SERVER:
    -Ci sono incompatibilità per la riproduzione di filmati complessi swf su server linux?
    -Puo’ essere un problema di server linux o di browser? (il filmato si inchioda con tutti i browser).
    – Questa newsletter può funzionare su server Windows 2003 con liguaggio Asp nativo ma con “anche” il supporto del linguaggio php 4.xx e con i permessi che sopra ho descritto? (estensione abilitata .php versione 4.4.1, safe_mode off, Dcom e COM disabilitati – non e’ possibile quindi connettersi a db access da php usando adodb.connection – GD lib e ImageMagick attive solo su hosting Linux)

    CONNESSIONE MySQL
    -Perdona l’ignoranza ma lo script “connessione.php” non dovrebbe essere aperto e chiuso dal maggiore e minore con punto interrogativo? (aprendo il file “connessione.php” dal browser compaiono i parametri di connessione con tanto di password).
    – Sotto è riportato lo script di connessione da completare che mi hanno fornito, ho notato che è differente dal tuo, può essere questo il motivo della mancata connessione al database?
    $dbhost = “62.149.150.XX”;
    $dbname = “nomedatabase”;
    $dbuser = “tuonomeutente”;
    $dbpasswd = “tuapassword”;

    Spero che tu mi possa aiutare.
    Ciao.

  36. marco l.

    Ciao Julius, ho risolto con la connessione a MySql. Le email vengono salvate sul DB e viene inviato il messaggio di avvenuta registrazione o di cancellazione sulla casella di posta.
    Ho utilizzato questo script:
    $dbhost = “62.149.150.XX”;
    $dbname = “nomedatabase”;
    $dbuser = “tuonomeutente”;
    $dbpasswd = “tuapassword”;
    $connessione=mysql_connect($db_host,$db_user,$db_password);
    mysql_select_db($db_database,$connessione);
    Però su flash quando si clicca su Iscriviti non compare nessun messaggio, il testo inserito viene registrato e rimane li. Se clicchi su cancellati, cancella l’indirizzo dal campo di testo e dall’elenco del database ma non compare nessun messaggio. L’unico messaggio che compare è solo “Email non inserita” nel caso di mancato inserimento.
    Invece il filmato con trasparenze (pubblicato per flash player 8 e 9, actionscript 2) continua a bloccarsi su server Linux, puoi dirmi qualcosa a riguardo?

    Ciao!

  37. @marco ciao ho visto che hai risolto da solo bravo!

    Per quanto riguarda linux non saprei dirti, purtroppo non ci lavoro..

  38. marco l.

    Ciao Julius, ho ancora questo problema quando si clicca su Iscriviti non compare nessun messaggio, il testo inserito viene registrato e rimane li. Se clicchi su cancellati, cancella l’indirizzo dal campo di testo e dall’elenco del database ma non compare nessun messaggio. L’unico messaggio che compare è solo “Email non inserita” nel caso di mancato inserimento. Le informazioni vengono registrate nel database ma sembra che non ritorni risposta a flash.

    Ciao.

  39. J.Lankart

    Ciao Julius!!
    Ho visto solo oggi questo articolo sulla newsletter e mi rendo conto che è una cosa praticamente di Agosto, però volevo chiederti se fosse possibile avere questa cosa con un DB testo anzichè mysql!! si può fare?
    Grazie!!!!

  40. ciao juli sono un tuo ammiratore da parekkio tempo ho risolto un mukkio di problemi grazie ai tuoi tutorial! ma adesso mi son bloccato davanti ad una newsletter con interazione da php a mysql in questo caso la seguente! lo scaricata o messo tutte le password nome database o creato la tabella anke perche su aruba mettevo la query ma non me la accettava quindi o dovuta crearla in manuale dopo aver realizzato i 2 pulsanti aver settato il file connessione ed email! clikko su registrati e non ricevo nessuna risposta nella var: msg ti prego! dammi una mano xke sto uscendo pazzo anke perke sembra un peccato aver acquistato mysql presso aruba! la versione risiede su apache 2.0 linux! ti prego aiutami xk sto uscendo pazzo ………
    webmaster@pvweb.it

  41. Ciao Julius,
    non riesco proprio a far funzionare lo script newsletter in flash: nessun segnale dopo aver pigiato iscrivimi e dalla pagina emails.php questa avvertenza:
    Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in /web/htdocs/www.antonellomanco.it/home/news/connessione.php on line 6
    Impossibile connettersi al database XXXXXXXX
    Puoi aiutarmi?
    saluti
    by Marco

Commenti