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
I codici sono visibili solo agli utenti del forum, registrati e avrai pieno accesso alle nostre risorse
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
I codici sono visibili solo agli utenti del forum, registrati e avrai pieno accesso alle nostre risorse
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
I codici sono visibili solo agli utenti del forum, registrati e avrai pieno accesso alle nostre risorse
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
I codici sono visibili solo agli utenti del forum, registrati e avrai pieno accesso alle nostre risorse
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!