ZenGFX.net

Graphic & Informatic Resources

Modifica Passaggio dati da Flash a PHP con invio mail


In questo tutorial ci occuperemo di come inviare delle email attraverso l’ausilio di Flash e PHP. Gli aspetti importanti di questo tutorial, saranno la realizzazione di un modulo per l’invio di mail realizzato in flash, ma ancor di più il modo in cui i dati vengono inviati da quest’ultimo a PHP.

Nel tutorial troverete il form d’esempio per l’email, il codice PHP e quello ActionScript 3.0 abbondantemente descritti passo per passo per facilitarne la comprensione ed un eventuale riutilizzo per altre applicazioni a vostra scelta.

In questo tutorial ci occuperemo di come inviare delle email attraverso l’ausilio di Flash e PHP. Gli aspetti importanti di questo tutorial, saranno la realizzazione di un modulo per l’invio di mail realizzato in flash, ma ancor di più il modo in cui i dati vengono inviati da quest’ultimo a PHP.
Nel tutorial troverete il form d’esempio per l’email, il codice PHP e quello ActionScript 3.0 abbondantemente descritti passo per passo per facilitarne la comprensione ed un eventuale riutilizzo per altre applicazioni a vostra scelta.

Iniziamo con con il realizzare in flash un form come questo:

io ho dato le dimensioni di 400×400, ma ovviamente voi potrete variare tutto come volete sia in dimensioni che forma, l’importante è che usiate gli stessi componenti che vengono utilizzati qui affinché l’action script che esamineremo sia compatibile.
Io ho usato quattro text field di cui le prime due denominate, txtDestinatario, txtOggetto, sono impostate come campo testo di input, quella in trasparenza txtLog è impostata come testo dinamico ed infine, l’ultima txtMessaggio è impostata come testo di input multiriga.

Con queste impostazioni, una volta creato il form, andiamo a selezionare lo stage per inserire al suo interno nel campo Azione di Flash CS3 questo codice:

  1. txtDestinatario.text='destinatario@mail.it';
  2. txtOggetto.text='Object';
  3. txtMessaggio.text='Messaggio';
  4.  
  5. function sendmail(event:MouseEvent):void{
  6. if((txtDestinatario.text == "")||(txtOggetto.text == "") ||(txtMessaggio.text == "")){
  7. txtLog.text="Campo Vuoto!";
  8. }
  9. else{
  10. var mail:URLVariables = new URLVariables();
  11. mail.destinatario = txtDestinatario.text;
  12. mail.oggetto = txtOggetto.text;
  13. mail.messaggio = txtMessaggio.text;
  14. var ponte:URLRequest = new URLRequest();
  15. ponte.url='sendmail.php';
  16. ponte.data=mail;
  17. ponte.method=URLRequestMethod.POST;
  18. var loader:URLLoader = new URLLoader();
  19. loader.dataFormat = URLLoaderDataFormat.TEXT;
  20. addListeners(loader);
  21. try{
  22. loader.load(ponte);
  23. }
  24. catch(error:Error){
  25. trace('Errore trasferimento');
  26. }
  27. }
  28. }
  29.  
  30. function addListeners(dispac:IEventDispatcher):void{
  31. dispac.addEventListener(Event.COMPLETE,completo);
  32. dispac.addEventListener(IOErrorEvent.IO_ERROR,errore);
  33. }
  34.  
  35. function completo(evento:Event):void{
  36. txtLog.text="Fatto.";
  37. }
  38.  
  39. function errore(evento:IOErrorEvent):void{
  40. txtLog.text="Errore.";
  41. }
  42. btnSend.addEventListener(MouseEvent.CLICK, sendmail);

Lo script su riportato ha lo scopo di preparare i dati inseriti nel form per un invio a PHP, che avrà a sua volta la funzione di inviare l’email. Ma andiamo ad esaminare tute le funzionalità.

Per prima cosa, appena il filmato parte, bisogna inizializzare i campi testo d’input. Per farlo utilizziamo le prime tre righe del codice su proposto. Dobbiamo adesso valutare quando i dati devono essere inviati a PHP per l’invio dell’email, ovviamente la cosa che ad intuito si può comprendere, è che i dati debbono essere inviati con la pressione del tasto “send”. Per fare questo, introduciamo una linea di codice atta a catturare l’evento per il nostro pulsante denominato btnSend.

All’ultima riga del codice, possiamo notare che è stato aggiunta la cattura di un Evento ovvero, lo script è in attesa di un evento del tipo Mouse Click. Quando questo si verifica, deve essere attivata la funzione sendmail.

Analizziamo adesso quest’ultima funzione. Come prima cosa, bisogna effettuare un rapido controllo sull’integrità dei dati, ovvero in questo caso che non ci siano campi vuoti. Il controllo è molto semplice e si fa con il blocco if in cui sono inserite le condizioni in OR. Se il test va a buon fine, significa che il mittente ha lasciato qualche campo vuoto e quindi deve essere generato un errore, che in questo caso corrisponde ad un messaggio comunicato attraverso la nostra txtLog. In questo esempio si è fatto solo il controllo sulle caselle vuote, ovviamente se si vuole realizzare qualcosa di più complesso, il controllo andrebbe effettuato anche sulla sintassi dell’indirizzo email.

Continuando nel blocco if, notiamo di essere arrivati all’else, questa porzione di codice viene eseguita nel caso in cui il test fallisca, ovvero tutti i campi del form sono pieni. Qui creiamo una variabile denominata mail, che servirà a confezionare i dati che vogliamo inviare allo script in PHP, prelevandoli direttamente dalle caselle di testo attraverso la proprietà .text.

Quando i dati sono pronti, bisogna aprire un canale verso PHP, quindi bisogna creare una variabile di tipo URLRequest, nell’esempio è denominata ponte. Con l’aiuto di questa variabile, per prima cosa selezioniamo il nostro script in PHP, poi selezioniamo i dati che vogliamo inviare, ovvero la nostra variabile mail, ed infine selezioniamo la modalità d’invio dei dati allo script, in questo esempio è stato scelto il metodo POST.

Inizia a questo punto la serie di controlli sulla corretta consegna dei dati allo script PHP.
Creiamo una variabile loader e settiamo il tipo di formato di dati caricati come TEXT, dato che noi dobbiamo inviare delle email di testo. Una volta fatto questo, evochiamo la funzione addListeners(loader) che ci consentirà di catturare i vari eventi per comprendere se i dati sono stati correttamente inviati allo script PHP o se ci sono stati degli errori.
Prima di esaminare la funzione addListeners, diamo considerazione al blocco try catch.

La funzione di caricamento della variabile loader, può generare degli errori che devono essere catturati e appunto per questo serve inserire la gestione errore con il try catch. Esaminiamo la funzione addListeners e scopriamo che altro non si tratta di un dispatcher atto a catturare eventi e quindi, assegnare ad essi una relativa funzione.

In questo caso a noi interessa catturare due eventi specifici, l’avvenuto invio dei dati ossia “complete” ed il verificarsi di qualche errore nel trasferimento ovvero “IOErrorEvent”.

La cattura di questi eventi implica il farne qualcosa e questo è demandato alle funzioni completo ed errore che si occuperanno di comunicare nella txtLog un messaggio sulla riuscita o sul fallimento dei dati.

Abbiamo visto tutto di questo script, adesso andiamo ad analizzare lo script PHP:

  1. <?php
  2. $Destinatario = $HTTP_POST_VARS['destinatario'];
  3. $Oggetto = $HTTP_POST_VARS['oggetto'];
  4. $Messaggio = $HTTP_POST_VARS['messaggio'];
  5.  
  6. mail($Destinatario,$Oggetto,$Messaggio);
  7.  ?>
Lo script è molto semplice, in queste tre variabili andiamo a depositare i dati prelevati attraverso il metodo POST. E’ estremamente importante che i nomi dei parametri della funzione $HTTP_POST_VARS coincidano con i nomi dati ai campi della variabile mail nell’ActionScript, altrimenti è ovvio che non funziona. Per ulteriori spiegazioni sulla funzione mail, si faccia riferimento al tutorial sull’invio mail qui .

  Mail con PHP e Flash (14.4 KiB, 3 hits)
You need to be a registered user to download this file.



Leave a Reply