Se avete sempre desiderato una sezione contatti nel vostro sito web e non vi siete mai accontentati di un banale mailto, questa è la guida che fa per voi.
Vediamo come realizzare un semplice, ma funzionale form mail in Flash e PHP.
Partiamo con il fatto che Flash da solo non è in grado di inviare e-mail, per cui dobbiamo appoggiarci ad un linguaggio lato-server, come PHP. Inoltre il nostro form sarà intelligente, nel senso che rileverà che tutti i campi siano stati compilati correttamente tramite 3 variabili booleane (che possono assumere o vero "true" o falso "false") check1, check2 e check3, prima di inviare i dati al nostro file PHP.
Come al solito apriamo un nuovo File Flash (Actionscript 2.0).
Inseriamo 4 livelli.
Nel livello "actions" andiamo a inserire il codice actionscript che ci serve, nel livello "sfondo" andiamo a disegnare 3 rettangoli, di cui uno molto più alto degli altri, che saranno lo sfondo dei campi di testo che andremo ad utilizzare, con le rispettive etichette.
Nel livello "campi" inseriamo 3 campi di "Testo di input" (opzione che possiamo scegliere dal pannello proprietà) facendoli compaciare con i rettangoli del livello sfondo appena disegnati. Diamo ad essi come nome variabile e come nome istanza (opzioni raggiungibili sempre dal pannelo proprietà) rispettivamente "nome","mail" e "messaggio"; inseriamo inoltre un campo di testo dinamico, al quale diamo come nome istanza e nome variabile "output" e che posizioniamo nella parte inferiore sinistra del nostro form. Esso servirà ad interagire con l'utente tramite dei messaggi.
Nel livello "pulsanti" inseriamo 2 pulsanti che creiamo preventivamente (in sostanza due campi di testo statico, con testo "invia" e "reset" che selezioniamo e cliccando il tasto F8, convertiamo in simboli "Pulsante"). Il nome da dare a questi 2 pulsanti non è rilevante; nel nostro esempio li chiamiamo invia_btn e reset_btn per semplicità. Ecco come dovrebbe presentarsi il nostro stage dopo queste operazioni:

Un particolare del pannelo proprietà nella creazione di un campo "Testo di input":

Creazione di un pulsante:

Adesso selezioniamo il fotogramma chiave del livello actions, premiamo il tasto F9 che ci apre il pannello Azioni e inseriamo come codice
- Codice: Seleziona tutto
System.useCodepage=true;
//Inizializzo le variabili
nome="";
mail="";
messaggio="";
output="";
Assegnando alla proprietà useCodepage true, facciamo in modo che flash passi al file php i caratteri codificati in modo corretto. La parte restante serve ad inizializzare le variabili in gioco.
Adesso selezioniamo il pulsante invia_btn e sempre dal pannello Azioni inseriamo il seguente codice
- Codice: Seleziona tutto
on(release){ //quando il pulsante viene rilasciato
if( nome eq "" )
check1=false;/*se il campo nome contiene una stringa vuota (usiamo l'operatore eq "equals" per confrontare due stringhe ), cioè non contiene nulla assegna false alla variabile check1*/
else
check1=true; /*altrimenti assegna true alla variabile check1*/
/*sul campo mail dobbiamo inserire dei controlli più avanzati, ovvero dobbiamo accertarci che l'indirizzo e-mail immesso sia valido. Lo stratagemma che usiamo è quello di verificare la presenza dei caratteri "." e "@". Usiamo il metodo lastIndexOf('carattere') che ci restituisce un intero che rappresenta l'ultimo "indice" o per semplicità l'ultima posizione di un certo carattere all'interno della stringa sulla quale richiamiamo il metodo. La condizione necessaria a superare il nostro controllo è che il numero restituitoci sia diverso da -1, il che significa che il carattere deve essere effetivamente presente nella stringa. Inoltre controlleremo che la stringa non sia vuota. Tutti questi controlli saranno concatenati dall'operatore logico or "||" che mette a paragone due espressioni e se una sola di queste è vera allora il risultato sarà vero*/
if(mail.lastIndexOf ('.') == -1 || mail.lastIndexOf ('@') == -1 || mail eq "")
check2=false; /*se l'ultima posizione dei caratteri '.' e '@' è -1 o la stringa è vuota, assegna false a check2*/
else
check2=true; /*altrimenti assegna true a check2*/
if( messaggio eq "")
check3=false;/*se il campo nome contiene una stringa vuota assegna false a check3*/
else
check3=true;/*altrimenti assegna true a check3*/
if(check1 && check2 && check3){ /*ora confrontiamo fra di loro le variabili check1,check2 e check3 tramite l'operatore and "&&" che restituisce vero solo se tutte e tre le variabili sono vere. Per cui se tutti i controlli sono andati a buon fine*/
var vars:LoadVars = new LoadVars(); /*creiamo un nuovo oggeto LoadVars con nome variabile "vars" che ci servirà ad inviare i dati al file PHP*/
/*l'oggetto vars può immagazzinare una sorta di attributi che servono da contenitore per i dati da inviare*/
vars.nome=nome;/* all'attributo nome di vars (vars.nome) assegniamo la nostra variabile nome*/ vars.mail=mail;/* all'attributo mail di vars (vars.mail) assegniamo la nostra variabile mail*/
vars.messaggio=messaggio;/*all'attributo messaggio di vars (vars.messaggio) assegniamo la nostra variabile messaggio*/
vars.sendAndLoad("invia.php",vars,"POST");/*inviamo il nostro oggetto vars con il metodo sendAndLoad('file PHP che riceverà ed elaborerà i dati, nel nostro caso "invia.PHP"','oggetto che riceverà il risultato, nel nostro caso lo stesso vars','metodo di invio, nel nostro caso POST')*/
vars.onload = function(success){ /*questa funzione viene eseguita quando si verifica l'evento onload su vars, ovvero quando il nostro oggetto vars riceve la risposta dal file "invia.PHP*/
if(success){ /*se i dati sono stati passati correttamente e se l'e-mail è stata inviata, viene mostrato un messaggio di successo e vengono resettati i campi*/
if(vars.esito=="success"){
output="Invio avvenuto correttamente";
nome="";
mail="";
messaggio="";
}
else
output="Errore invio, riprovare";/*altrimenti viene mostrato un messaggio di errore*/
}
else
output="Errore invio, riprovare";/*altrimenti viene mostrato un messaggio di errore*/
}//fine funzione
}//fine if
else
output="Compilare i campi correttamente";/*se il controllo sui campi non va a buon fine ricordiamo all'utente di compilare i campi correttamente*/
}//fine on(release)
Il codice per il pulsante invia è terminato. Usciamo dal pannello Azioni per un attimo, selezioniamo il pulsante reset_btn e vi rientriamo.
Inseriamo come codice
- Codice: Seleziona tutto
nome="";
mail="";
messaggio="";
output="";
che serve appunto a resettare tutti i campi.
Per quanto riguarda la parte flash abbiamo finito. Possiamo già salvare e pubblicare il nostro form in attesa di creare il file "invia.php".
Apriamo un qualsiasi editor di testi, se supporta PHP è ancora meglio. Io ad esempio uso Dreamweaver.
Creiamo un nuovo file che chiamiamo "invia.php" e vi inseriamo il seguente codice:
- Codice: Seleziona tutto
<?php
$to = "tuoindirizzo@mail.it";
$mittente = strip_tags($_POST["mail"]);
$oggetto = "Invio mail dal form";
$messaggio = "Nome: ". strip_tags($_POST["nome"]) . "\nIndirizzo: ". strip_tags($_POST ["mail"])."\nMessaggio: ". strip_tags($_POST["messaggio"]);<br />$headers = "From: <$mittente>";
if(!mail($to, $oggetto, $messaggio, $headers)) die("&esito=errore&");<br />else echo "&esito=success&";
?>
Vediamo di commentarlo un pò:
Intanto i caratteri '' indicano l'inizio e la fine di uno script php. Una variabile in php viene indicata con il simbolo dollaro '$' prima del nome.
Alla variabile $to assegniamo l'indirizzo sul quale vogliamo ricevere i messaggi, a $mittente assegniamo l'indirizzo specificato dall'utente nel campo mail del form a $oggetto appunto l'oggetto del messaggio e a messaggio concateniamo insieme "Nome:" seguito dal nome che è stato specificato dal form, "Indirizzo:" seguito dall'indirizzo specificato nel form e "Messaggio:" seguito dal messaggio specificato nel form, avendo premura di andare a capo ogni volta grazie al parametro'n'. Il metodo strip_tags() elimina alcuni tag fastidiosi che verrebbero altrimenti inviati con l'email.
Visto che il metodo di invio del form che abbiamo usato è "POST" i dati nel file php li troviamo nell'array $_POST. L'array $_POST è un array associativo, ovvero un array che ci fornisce il dato corrispondente al campo che specifichiamo. Quindi se vogliamo il nome specificato nel form, non doabbiamo fare altro che richiamare $_POST["nome"], perchè 'nome' se ricordiamo bene è il nome dell'attributo del nostro oggetto vars che contiene appunto il nome del mittente. Assegniamo ala variabile $headers (che rappresenta appunto gli headers dell'e-mail che andremo ad inviare) "From: " che servirà al nostro client di posta per riconoscere il mittente.
In seguito inviamo il messaggio e facciamo un controllo sul risultato.
if(!mail($to, $oggetto, $messaggio, $headers)) die("&esito=errore&");
L'istruzione if esegue il suo contenuto se la condizione è vera. Noi vogliamo eseguire una certa operazione se l'invio dell'e-mail non è andato a buon fine e per rendere questo risultato vero usiamo l'operatore not '!' che trasforma appunto false in true e viceversa.
Qundi se l'e-mail non è stata inviata, arresta l'esecuzione del file php con il metodo die(), che ci permette inoltre di inserire un parametro che invieremo al nostro oggetto vars e nel nostro caso "errore", che sarà catturato dalla funzione che abbiamo sepcificato nel nostro form che a sua volta mostrerà un messaggio negativo. Se invece l'e-mail è stata inviata correttamente il risultato trasmesso al form sarà "success".
Naturalmente il tutto va testato su un server che interpreti php e che consenta l'invio di e-mail, altrimenti riceveremo sempre un messaggio di errore.
Non ci resta che salvare il tutto e pubblicare i file, avendo premura di inserirli nella stessa cartella.
Questo è il risultato e
qui ci sono i sorgenti.
Buon divertimento!