Mi sono arrivati molti messaggi privati negli ultimi tempi per sapere come si a far collaborare flash e php.
PREMESSA
Flash legge le variabili esterne solamente in questo formato:
&var1=valore1&...
Cioè: bisogna mettere una & all'inizio e alla fine della stringa e anche una & tra ogni variabile.
In questo esercizio vedremo come fare delle aree segrete con php e flash. Tutto è molto semplice, ma naturalmente questo da un input alla creazione di cone molto complesse
PREPARIAMO L'SWF
Creiamo (si scrive così :master: ) un nuovo documento flash con 3 frame distinti, nel primo mettiamo due campi di testo dinamico e li chiamiamo: uname (naturalmente conterrà il nome utente) e psw (che conterrà la password). Un esempio di quello che deve venir fuori lo trovate sulla foto 1.jpg.
Sul secondo frame mettiamo un testo con scritto: USERNAME E PASSWORD ERRATA e aggiungiamo anche un link che riporti l'utente al primo frame.
Sul terzo (ed ultimo) frame mettiamo un testo con su scritto: BRAVO. HAI INDOVINTANO LA PASSWORD
Fatto ciò, mettiamo sul primo frame questo codice:
codice:
stop();
function invia() //creo una funzione per l'operazione di send
{
dati = new LoadVars(); // inizializzazione oggetto "dati" con la classe "LoadVars"
dati.username = _root.uname.text; //inserisco la variabile "username" con il valore di uname, da inviare
//alla pagina php
dati.passwd = _root.psw.text; //idem per questo
dati.sendAndLoad("http://localhost/test/gestione.php",dati,"POST"); //Operazione di Invia e Carica
//il primo parametro punto alla pagina che deve riceve i dati e da cui caricare i dati; il secondo
//indica l'oggetto che contiene tutte le variabili da inviare (che è praticamente è se stesso);
//il terzo indica il metodo con cui inviare i dati: GET o POST. Ho messo post perché reputo il
//migliore.
dati.onLoad = carica; // con quest'istruzione chiamo la funzione carica per indirizzo
}
function carica()
{
if (dati.login == "si") //controllo se la variabile inviata da php "login" è su true
gotoAndStop(3); //si ricordi che le variabili sia da PHP>FLASH e viceversa
else //SONO SEMPRE STRINGHE, anche se tu invii dei numeri, dei
gotoAndStop(2); //valori booleani, sono sempre comunque stringhe
} //noterai che ho messo si tra virgolette, ma potevo
//mettere anche 1 ed andava sempre tra virgoletet
//"1"
//oppure potevo mettere true ed andava fatto così
//"true"
//non so se sono stato chiaro su questo punto
e qui abbiamo finito, creiamo l'swf e possiamo chiudere tutte cose.
PREPARIAMO IL FILE PHP
Creiamo u file php chiamato gestione.php w gli mettiamo questo codice
Codice PHP:
<?php
$nomeutente = "admin"; //decido il nome utente e pass da confrontare
$password = "password";
if ( ($_POST['username'] == $nomeutente) && ($_POST['passwd'] == $password) ) //inizio il confronto tra uname e pass
{
echo "&login=si&"; //viene stampato: &login=si&
}
else
{
echo "&login=no&"; //viene stampato: &login=no&
}
/*
flash accetto solo variabili con questa sintassi:
&<nomevariabile>=<valore>...&
si noti che all'inizio e alla fine della strigna di variabili vengono messi le & e tra le variabili, esempio:
&var1=valore1&var2=valore2&var3=valore3&
$_POST['username'] è la stessa variabile che io ho usato su flash -> dati.username
$_POST['passwd'] è la stessa variabile che io ho usato su flash -> dati.passwd
in questo caso, noi inviamo a flash la variabile login, e su flash viene usata -> dati.login
*/
?>
Il codice è molto piccolo e leggero, quindi è facilmente modificabile
CONCLUSIONI
come vedete, tutti i codici sono commentati e sono facilmente implementabili. Naturalmente lo dovrete testare in un server capace di interpretare i file php. Per esempio ho un server in locale ed ho messo http://localhost
Dovrete mettere il riferimento assoluto quando fate i test su flash, voglio dire, quando avete intensione di testare la pagine premendo i classici file CRLT+INVIO.
Quando siete sicuri che tutto va bene e che funzioni alla meraviglia, potete mettere i riferimenti assoluti in relativi, ma dovrete testare la pagina in un server capace di interpretare php
Anche se ho detto 2 volte questa cosa del server, voglio precisarla perché è uan cosa molto importante
Spero che vi sia stata molto utile...