Archivio

Archive for maggio 2009

[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
?>

Categorie:ACTIONSCRIPT 3.0

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

L’esempio seguente mostra come inviare una variabile ( il contenuto di un TextField ) ad uno script PHP (Server-Side), e ricevere dallo script PHP un messaggio di risposta.

// .........................................................
//     NAME : FlashPhp.fla
//            ESEMPIO MINIMALISTA DI INVIO E RICEZIONE DATI
//            TRA FLASH E PHP
// .........................................................

// ... IMPORT DELLE CLASSI PER IL CARICAMENTO E LO SCAMBIO
//     DEI DATI CON LO SCRIPT PHP
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLVariables;

// ... DICHIARAZIONE DELLE VARIABILI RELATIVE AI REFERENCE
//     DEGLI OGGETTI
var phpRequest : URLRequest;
var phpLoader  : URLLoader;
var dataToPHP  : URLVariables;

// ... CREAZIONE DELL'OGGETTO URLRequest PER LA RICHIESTA
//     DI ESECUZIONE DELLO SCRIPT PHP (LATO SERVER)
phpRequest = new URLRequest();

// ... CREAZIONE DELL'OGGETTO URLLoader PER IL CARICAMENTO
//     DELLO SCRIPT PHP (LATO SERVER)
phpLoader  = new URLLoader();

// ... CREAZIONE DELL'OGGETTO URLVariables PER L'INVIO
//     DELLE VARIABILI DA FLASH A PHP
dataToPHP  = new URLVariables();

// ... IMPOSTAZIONE DEL METODO DI PASSAGGIO DELLE VARIABILI
//     (GET | POST)
phpRequest.method = URLRequestMethod.POST;

// ... ASSEGNAZIONE DEL TIPO DI 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)
phpLoader.dataFormat = URLLoaderDataFormat.VARIABLES;

// ... altri modi in cui possono essere ricevuti i dati
//     dallo script PHP :

//     - in formato testo (URLLoaderDataFormat.TEXT)
//       i dati sono costituiti da una stringa contenente il testo

//     - in formato binaro (URLLoaderDataFormat.BINARY)
//       i dati sono costituiti da un oggetto di Classe ByteArray

// ***

// ... I COMPONENTI PRESENTI SULLO STAGE (per il test) :

// ... UN TextField PER L'IMMISSIONE DI UN CAMPO DA INVIARE
//     ALLO SCRIPT PHP
nickName.text = "";

// ... UN TextField CHE CONTERRA' IL MESSAGGIO RICEVUTO
//     DALLO SCRIPT PHP
msg.text      = "";

// ... UN Button PER L'AVVIO DEL CARICAMENTO ED ESECUZIONE
//     DELLO SCRIPT PHP (sul server)
btn_Send.addEventListener(MouseEvent.CLICK, onClickSend);

// ...

// .........................................................
//     FUNCTION : onClickSend() - MouseEvent.CLICK
//                AVVIO DEL CARICAMENTO ED ESECUZIONE DELLO
//                SCRIPT PHP SUL SERVER
// .........................................................
function onClickSend(evento:MouseEvent):void
{
    // ... PREPARAZIONE DEI DATI DA INVIARE ALLO SCRIPT PHP

    // ... ASSEGNAZIONE DELLE VARIABILI DA INVIARE
    //     (come proprietà dinamiche dell'oggetto : URLVariables)
    dataToPHP.nickname = nickName.text;
    // ... etc..

    // ... AGGIUNTA DEGLI ASCOLTATORI PER LA GESTIONE DEGLI EVENTI :

    // ... AGGIUNTA DELL'ASCOLTATORE PER LA GESTIONE
    //     DELL'EVENTO : COMPLETE
    //     (la funzione sarà invocata al termine dell'esecuzione
    //      dello script PHP ed eventuali dati, inviati da questi,
    //      saranno pervenuti)
    phpLoader.addEventListener(Event.COMPLETE, onCompleteScript);

    // ... AGGIUNTA DELL'ASCOLTATORE PER LA GESTIONE
    //     DELL'EVENTO : IO_ERROR
    //     (la funzione sarà invocata in caso di errore durante
    //      il caricamento dello script PHP)
    phpLoader.addEventListener(IOErrorEvent.IO_ERROR, onErrorScript);

    // ... AGGIUNTA DELL'ASCOLTATORE PER LA GESTIONE
    //     DELL'EVENTO : OPEN
    //     (la funzione sarà invocata quando il caricamento
    //       dello script PHP e' iniziato)
    phpLoader.addEventListener(Event.OPEN, onOpenScript);

    // ... AGGIUNTA DELL'ASCOLTATORE PER LA GESTIONE
    //     DELL'EVENTO : PROGRESS
    //     (la funzione sarà invocata durante il caricamento
    //      dello script PHP)
    phpLoader.addEventListener(ProgressEvent.PROGRESS, onProgressScript);

    // ... ASSEGNAZIONE DELL'OGGETTO: URLVariables ALLA
    //     PROPRIETA' .data DELL'OGGETTO : URLRequest
    phpRequest.data = dataToPHP;

    // ... ASSEGNAZIONE DELLO SCRIPT PHP ALLA PROPRIETA' .url
    //     DELL'OGGETTO : URLRequest
    phpRequest.url  = "flashPhp.php";

    // ... AVVIO DELLA RICHIESTA DI CARICAMNETO ED ESECUZIONE
    //     DELLO SCRIPT PHP SUL SERVER
    phpLoader.load(phpRequest);

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

// .........................................................
//     FUNCTION : onCompleteScript() - Event.COMPLETE
//                EVENTO NOTOFICATO AL COMPLETAMENTO ED
//                ESECUZIONE DELLO SCRIPT PHP SUL SERVER
// .........................................................
function onCompleteScript(evento:Event):void
{
    var dataFromPHP : URLVariables;
    var msgFromPHP  : String;

    // ... LO SCRIPT PHP E' STATO CARICATO ED ESEGUITO, ED
    //     I DATI SONO STATI RICEVUTI!

    // ... CREAZIONE DI UN OGGETTO : URLVariables IN CUI
    //     ACQUISIRE I DATI RICEVUTI DALLO SCRIPT PHP
    //     (al metodo costruttore viene passato come argomento
    //      la proprietà .data contenente i dati ricevuti)
    dataFromPHP = new URLVariables(evento.target.data);

    // ... ACQUISIZIONE DELLE VARIABILI INVIATE DALLO SCRIPT PHP
    //     (il nome della proprieta' .messaggio e' quello
    //      indicato nell'echo dello script PHP)
    msgFromPHP = dataFromPHP.messaggio;
    // ... etc..

    // ... VISUALIZZAZIONE
    msg.text = String(dataFromPHP.messaggio);
    // ... etc..

    // ... RIMOZIONE DEGLI ASCOLTATORI
    phpLoader.removeEventListener(Event.COMPLETE, onCompleteScript);
    phpLoader.removeEventListener(IOErrorEvent.IO_ERROR, onErrorScript);
    phpLoader.removeEventListener(Event.OPEN, onOpenScript);
    phpLoader.removeEventListener(ProgressEvent.PROGRESS, onProgressScript);
}
// .........................................................

// .........................................................
//     FUNCTION : onErrorScript() - IOErrorEvent.IO_ERROR
//                EVENTO NOTIFICATO IN CASO DI ERRORE DI
//                CARICAMENTO DELLO SCRIPT PHP SUL SERVER
// .........................................................
function onErrorScript(evento:IOErrorEvent):void
{
    // ... SI E' VERIFICATO UN ERRORE DURANTE IL CARICAMENTO
    msg.text = '... errore caricamento Script PHP';
}
// .........................................................

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

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

// ... END

… lo script PHP

<?
    // .....................................................
    //  NAME : flashPhp.php
    //         ESEMPIO DI SCAMBIO DATI TRA FLASH E PHP
    // .....................................................

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

    // ... il nick name
    $nickName   = $_POST['nickname'];
    // ... etc..

    // ... prepara risposta
    $msg        = '... hello ' . $nickName;

    // ... invia messaggio di ritorno all'SWF chiamante
    echo "messaggio=" . urlencode($msg);

    // ... 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 script
?>

Categorie:ACTIONSCRIPT 3.0