18/02
2010

Flash: proteggere i dati di una e-card personalizzata

Un modo molto semplice per passare dei valori ad un swf è utilizzare il parametro FlashVars nel codice html della nostra pagina. In questo modo si possono creare diverse variabili che verranno poi richiamate nel flash. Ma se qualcuno scaricasse il file swf e lo inserisse in una sua pagina html? Potrebbe cambiare i valori delle variabili nel codice e riutilizzare il vostro lavoro! In questo esempio vediamo come realizzare una semplice e-card personalizzata con il nome del mittente e del destinatario e come impedire che il vostro flash possa essere utilizzato da altre persone.

Dopo aver disegnato la nostra cartolina passiamo alla parte di personalizzazione con as3.

Abbiamo bisogno innanzitutto di due campi di testo dinamico che ricevono le varabili, li chiameremo “txt_destinatario” e “txt_mittente”. Nel pannello Azioni scriveremo:

txt_destinatario.text = root.loaderInfo.parameters.nomeDestinatario;
txt_mittente.text = root.loaderInfo.parameters.nomeMittente;

“root.loaderInfo.parameters” permette di ricevere il valore dal parametro FlashVars; “nomeDestinatario” e “nomeMittente” sono le variabili.

A questo punto pubblichiamo il file swf e l’html. Naturalmente continueremo a vedere nei nostri campi di testo i valori di default “nome destinatario” e “nome mittente”. Andiamo ad inserire le varibili. Apriamo il codice html e scriviamo il parametro FlashVars in questo modo:

Adesso, richiamando la pagina html dal browser potremo vedere l’ecard personalizzata!

Supponiamo che qualcuno pensasse di copiare la vostra ecard e spedirla da parte sua ad un suo amico... gli basterebbe scaricare il flash o richiamarlo in una sua pagina e cambiare i valori delle variabili.

Un modo semplice per impedire che questo avvenga è inserire con as3 un controllo dell’indirizzo della pagina che richiama il flash: “Se l’indirizzo corrisponde al mio sito fai partire il filmato”.

Per fare questo aggiungiamo un frame prima di quelli su cui abbiamo lavorato; creiamo un messaggio di errore e un nuovo frame per inserire il controllo.

var path;
function verifyPath() {path=ExternalInterface.call("window.location.href.toString");
return (path.indexOf("http://www.miosito.com")==0);
}
if (verifyPath())
{
gotoAndPlay(2);
}
else
{
stop();
}

la classe ExternalInterface esegue il comando javascript che recupera l’url della pagina. Con il metodo indexOf verifichiamo che la stringa "http://www.miosito.com" abbia indice 0, e che quindi sia all’inizio della stringa da verificare. In questo caso il flash può essere eseguito, altrimenti si fermerà al primo frame che mostrerà il messaggio di errore. Questo script funziona anche nel caso si volesse richiamare il flash in un iframe.

commenti

Inserisci il tuo commento


Ultimi Post