Home > ACTIONSCRIPT 3.0 > [AS3] – Invio e ricezione Array tra FLASH e PHP

[AS3] – Invio e ricezione Array tra FLASH e PHP

Questo esempio mostra come inviare un’Array da FLASH ad uno script PHP e ricevere dallo script PHP un altro Array.
 
Un modo elementare :
Un Array di nomi viene ‘impacchettato’ in un unica stringa con il metodo : join() della Classe String ( tutti gli elementi dell’Array sono concatenati utilizzando un delimitatore ), quindi inviato allo script PHP.

Lo script PHP riceve la stringa, la ‘esplode’ con la funzione : explode() e riottiene l’Array originale.
L’Array (originale) ottenuto è copiato in un nuovo Array e rispedito all’SWF chiamante.
 
 

 

 

// ...............................................................
//   NAME : flashToPhp.fla
//          QUESTO ESEMPIO MOSTRA COME INVIARE E RICEVERE UN ARRAY
//          TRA FLASH ED UNO SCRIPT PHP
// ...............................................................

import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLVariables;

var richiestaPHP  :URLRequest;
var caricatorePHP :URLLoader;
var varsToPHP     :URLVariables;
var arrayNomi     :Array;

// ... CREAZIONE OGGETTO RICHIESTA DI ESECUZIONE DELLO SCRIPT PHP
richiestaPHP        = new URLRequest("PhpToFLASH_02.php");

// ... CREAZIONE OGGETTO CARICATORE SCRIPT PHP
caricatorePHP       = new URLLoader(richiestaPHP);
// ... CREAZIONE OGGETTO URLVariables PER L'INVIO DELLE VARIABILI
//     ALLO SCRIPT PHP
varsToPHP           = new URLVariables();

// ... IMPOSTAZIONE METODO PASSAGGIO VARIABILI ALLO SCRIPT (GET | POST)
richiestaPHP.method = URLRequestMethod.POST;
// ... FORMATO IN CUI SI DESIDERA RICEVERE I DATI DALLO SCRIPT PHP :

// ... in formato VARIABLES
//     i dati ricevuti sono costituiti da un oggetto :URLVariables
//     che contiene le variabili con codifica URL
caricatorePHP.dataFormat = URLLoaderDataFormat.VARIABLES;

// ... ALTRI FORMATI IN CUI POSSONO ESSERE RICEVUTI I DATI DALLO SCRIPT :
//
//     - in fomato TEXT ( URLLoaderDataFormat.TEXT )
//       i dati sono costituiti da una stringa contenente il testo
//
//     - in formato BINARY ( URLLoaderDataFormat.BINARY )
//       i dati sono costituiti da un oggetto ByteArray

// ... CREAZIONE DELL'ARRAY DA INVIARE ALLO SCRIPT PHP
arrayNomi = new Array();

// ... INIZIALIZZAZIONE
arrayNomi.push('giulio');
arrayNomi.push('alina');
arrayNomi.push('carlo');
arrayNomi.push('anna');

// ...

// ... COMPONENETI PRESENTI SULLO STAGE (per il test) :

// ... UN BUTTON PER L'AVVIO DEL CARICAMENTO DELLO SCRIPT PHP
btn_invia.addEventListener(MouseEvent.CLICK, onClickInvia);

// ... UN CAMPO TextField (multiline) CHE CONTERRA' L'ARRAY
//     RICEVUTO DALLO SCRIPT PHP
kmessaggi.text = "";
// ...

// ...............................................................
//  FUNCTION : onClickInvia() - MouseEvent.CLICK
//             AVVIO CARICAMENTO ED ESECUZIONE DELLO SCRIPT PHP
// ...............................................................
function onClickInvia(evento:MouseEvent):void
{
// ... AVVIO DELLO SCRIPT PHP

// ... 'impacchetta' GLI ELEMENTI DELL'ARRAY IN UN'UNICA
//     STRING, UTILIZZANDO COME DELIMITATORE IL CARATTERE "|"
var stringNomi = arrayNomi.join("|");

// ... DOPO LA join(), L'ARRAY DIVENBTA UN'INICA STRING
// stringNomi = 'giulio|alina|carlo|anna';

// ... ASSEGNAZIONE DELLA VARIABILI DA INVIARE COME PROPRIETA'
//     DELL'OGGETTO URLVariables
varsToPHP.nomi = stringNomi;

// ... AGGIUNTA DELL'ASCOLTATORE EVENTO : OPEN
//     per sapere quando il caricamento dello script PHP è iniziato
caricatorePHP.addEventListener(Event.OPEN, onOpenScript);

// ... AGGIUNTA DELL'ASCOLTATORE EVENTO : PROGRESS
//     per sapere che lo script è in fase di caricamento ed esecuzione
caricatorePHP.addEventListener(ProgressEvent.PROGRESS, onProgressScript);

// ... AGGIUNTA DELL'ASCOLTATORE EVENTO : COMPLETE
//     per sapere quando lo script PHP termina ed i dati saranno dati
//     ricevuti.
caricatorePHP.addEventListener(Event.COMPLETE, onCompleteScript);

// ... AGGIUNTA DELL'ASCOLTATORE EVENTO : IO_ERROR
//     per gestire eventuali errori durante il caricamento o esecuzione
//     dello script PHP.
caricatorePHP.addEventListener(IOErrorEvent.IO_ERROR, onErrorScript);

// ... ASSEGNAZIONE DELL'OGGETTO URLVariables ALLA PROPRIETA' .data
//     DELL'OGGETTO URLRequest ( invio dei dati )
richiestaPHP.data = varsToPHP;

// ... AVVIA LA RICHIESTA DI CARICAMENTO ED ESECUZIONE DELLO SCRIPT PHP
caricatorePHP.load(richiestaPHP);

// ...
}
// ...............................................................

// ...............................................................
//  FUNCTION : onOpenScript() - Event.OPEN
//             NOTIFICATO ALL'AVVIO DEL CARICAMENTO DELLO SCRIPT
// ...............................................................
function onOpenScript(evento:Event):void
{
// ... IL CARICAMENTO ED ESECUZIONE DELLO SCRIPT PHP
//     ( SUL SERVER ) E' AVVIATO
kmessaggi.text = '... avvio caricamento Script PHP';
}
// ...............................................................

// ...............................................................
//  FUNCTION : onProgressScript() - ProgressEvent.PROGRESS
//             EVENTO NOTIFICATO DURANTE IL CARICAMENTO
//             ED ESECUZIONE DELLO SCRIPT PHP
// ...............................................................
function onProgressScript(evento:ProgressEvent):void
{
// ... LO SCRIPT PHP E' IN ESECUZIONE ( SUL SERVER )
kmessaggi.text = '... attendere prego!';
}
// ...............................................................

// ...............................................................
//  FUNCTION : onComplteScript()
//             EVENTO NOTIFICATO AL COMPLETAMENTO DELL'ESECUZIONE
//             DELLO SCRIPT PHP
// ...............................................................
function onComplteScript(evento:Event):void
{
// ... LO SCRIPT PHP E' STATO CARICATO ED ESEQUITO, ED I DATI
//     SONO STATI RICEVUTI ...

// ... CREAZIONE DI UN OGGETTO URLVariables, PASSANDO AL
//     COSTRUTTORE I DATI RICEVUTI DALLO SCRIPT PHP
var varsFromPHP = new URLVariables(evento.target.data);

// ... DICHIARAZIONE DI UNA VARIABILE STRING IN CUI COPIARE
//     LA VARIABILE RICEVUTA DALLO SCRIPT PHP
var stringMessaggi:String;

// ... CREAZIONE DI UN NUOVO ARRAY
var arrayMessaggi :Array = new Array();

// ... ACQUISIZIONE DELLA VARIABILE RICEVUTA
stringMessaggi = varsFromPHP.messaggi;
// ... NOTA : il nome della proprietà messaggi è quello
//            indicato nell'echo dello script PHP

// ... 'spacchetta' LA STRINGA IN ELEMENTI DELL'ARRAY
arrayMessaggi  = stringMessaggi.split("|");

// ... VISUALIZZA GLI ELEMENTI DELL'ARRAY
kmessaggi.text = "";
for (var i=0; i < arrayMessaggi.length; i++)
{
kmessaggi.appendText(arrayMessaggi[i] + "\n");
};

// ... RIMUOVI GLI ASCOLTATORI
caricatorePHP.removeEventListener(Event.OPEN, onOpenScript);
caricatorePHP.removeEventListener(ProgressEvent.PROGRESS, onProgressScript);
caricatorePHP.removeEventListener(Event.COMPLETE, onCompleteScript);
caricatorePHP.removeEventListener(IOErrorEvent.IO_ERROR, onErrorScript);
}
// ...............................................................

// ...............................................................
//  FUNCTION : onErrorScript() - IOErrorEvent.IO_ERROR
//             EVENTO NOTIFICATO IN CASO DI ERRORE DURANTE IL
//             CARICAMENTO DELLO SCRIPT
// ...............................................................
function onErrorScript(evento:IOErrorEvent):void
{
// ... ERRORE DURANTE LA FASE DI CARICAMENTO DELLO SCRIPT
kmessaggi.text = '... errore di caricamento dello script PHP';
}
// ...............................................................

// ... END

 
… lo script PHP

 


<?
// .....................................................
//  NAME : PhpToFLASH_02.php
//         Ricezione ed invio di Array tra FLASH e PHP
// .....................................................

// ... acquisizione delle variabili inviate dall'SWF

// ... la stringa 'impacchettata' contenete l'Array
//     inviato dall'SWF
$stringNomi = $_POST['nomi'];

// ... crea l'Array da ricostruire
$arrayNomi = array();

// ... 'spacchetta' la stringa in elementi dell'Array
$arrayNomi = explode("|", $stringNomi);

// ... l'Array e' stato ricostruito!

// ... crea un nuovo Array, quello che verra' rispedito
//     all'SWF
$arrayMessaggi = array();

// ... copia i nomi presenti nell'Array ricevuto negli
//     elementi del nuovo array, aggiugendo '... hello '
for ($i = 0; $i < sizeof($arrayNomi); $i++)
{
$arrayMessaggi[$i] = '... hello ' . $arrayNomi[$i];
}

// ... 'impacchetta' l'Array in una stringa da rispedire
//     all'SWF
$stringMessaggi = implode("|", $arrayMessaggi);

// ... invia la stringa all'SWF chiamante
echo "messaggi=" . urlencode($stringMessaggi);

// ... la funzione urlencode() effettua l'encoding di
//     una stringa, covertendo la stringa in un formato
//     URL valido (conversione di caratteri speciali).

// ... i caratteri '/', '%', '&', etc..., sono
//     convertiti con il segno % seguito dalla codifica
//     HEX del carattere.

// ... la funzione inversa e' : urldecode()

// ... end of JOB
?>

Annunci
Categorie:ACTIONSCRIPT 3.0
  1. Non c'è ancora nessun commento.
  1. No trackbacks yet.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...