Memorizzazione di dati locali

Un oggetto condiviso, a volte definito come "cookie Flash", è un file di dati che può essere creato sul computer locale dai siti visitati. Gli oggetti condivisi vengono comunemente utilizzati per migliorare la navigazione su Internet, ad esempio consentendo la personalizzazione dell'interfaccia di un sito Web visitato di frequente. Gli oggetti condivisi non sono di per sé in grado di effettuare operazioni o utilizzare i dati presenti nel computer. È importante sottolineare, inoltre, che gli oggetti condivisi non possono mai accedere o ricordare l'indirizzo di posta elettronica o altre informazioni personali dell'utente, a meno che tali informazioni non vengano fornite volontariamente.

È possibile creare nuove istanze di un oggetto condiviso utilizzando il metodo statico SharedObject.getLocal() o SharedObject.getRemote(). Il metodo getLocal() tenta di caricare un oggetto condiviso persistente a livello locale disponibile solo per il client corrente, mentre il metodo getRemote() tenta di caricare un oggetto condiviso remoto che può essere condiviso tra più client mediante un server, ad esempio Flash Media Server. Se l'oggetto condiviso locale o remoto non esiste, i metodi getLocal() e getRemote() creano una nuova istanza di SharedObject.

Il codice riportato di seguito tenta di caricare un oggetto condiviso locale di nome test. Se questo oggetto condiviso non esiste, viene creato un nuovo oggetto condiviso con lo stesso nome.

var so:SharedObject = SharedObject.getLocal("test");
trace("SharedObject is " + so.size + " bytes");

Se non è possibile trovare un oggetto condiviso di nome test, ne viene creato uno nuovo con dimensioni di 0 byte. Se l'oggetto condiviso esisteva in precedenza, vengono restituite le dimensioni correnti (espresse in byte).

È possibile memorizzare dati in un oggetto condiviso assegnando dei valori all'oggetto dati, come illustrato nell'esempio riportato di seguito:

var so:SharedObject = SharedObject.getLocal("test");
so.data.now = new Date().time;
trace(so.data.now);
trace("SharedObject is " + so.size + " bytes");

Se è già presente un oggetto condiviso con il nome test e il parametro now, il valore esistente viene sovrascritto. È possibile utilizzare la proprietà SharedObject.size per determinare se un oggetto condiviso esiste già, come illustrato nell'esempio riportato di seguito:

var so:SharedObject = SharedObject.getLocal("test");
if (so.size == 0)
{
    // L'oggetto condiviso non esiste.
    trace("created...");
    so.data.now = new Date().time;
}
trace(so.data.now);
trace("SharedObject is " + so.size + " bytes");

Il codice sopra riportato utilizza il parametro size per determinare se l'istanza dell'oggetto condiviso con il nome specificato esiste già. Se si prova il codice riportato di seguito, si noterà che l'oggetto condiviso viene ricreato ogni volta che si esegue il codice. Per salvare un oggetto condiviso sul disco rigido dell'utente, è necessario chiamare in modo esplicito il metodo SharedObject.flush() come illustrato nell'esempio riportato di seguito:

var so:SharedObject = SharedObject.getLocal("test");
if (so.size == 0)
{
    // L'oggetto condiviso non esiste.
    trace("created...");
    so.data.now = new Date().time;
}
trace(so.data.now);
trace("SharedObject is " + so.size + " bytes");
so.flush();

Quando si utilizza il metodo flush() per scrivere gli oggetti condivisi sul disco rigido dell'utente, verificare con attenzione se l'utente ha disattivato in modo esplicito la memorizzazione locale tramite Gestione impostazioni di Flash Player (www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager07.html), come illustrato nell'esempio riportato di seguito:

var so:SharedObject = SharedObject.getLocal("test");
trace("Current SharedObject size is " + so.size + " bytes.");
so.flush();

È possibile recuperare i valori da un oggetto condiviso specificando il nome della proprietà nella proprietà data dell'oggetto condiviso. Ad esempio, se si esegue il codice riportato di seguito, verrà indicato da quanti minuti è stata creata l'istanza di SharedObject:

var so:SharedObject = SharedObject.getLocal("test");
if (so.size == 0)
{
    // L'oggetto condiviso non esiste.
    trace("created...");
    so.data.now = new Date().time;
}
var ageMS:Number = new Date().time - so.data.now;
trace("SharedObject was created " + Number(ageMS / 1000 / 60).toPrecision(2) + " minutes ago");
trace("SharedObject is " + so.size + " bytes");
so.flush();

La prima volta che si esegue il codice sopra riportato, viene creata una nuova istanza di SharedObject di nome test con dimensioni iniziali di 0 byte. Poiché le dimensioni iniziali sono pari a 0 byte, l'istruzione if restituisce true e viene aggiunta una nuova proprietà di nome now all'oggetto condiviso locale. La durata dell'oggetto condiviso viene calcolata sottraendo il valore della proprietà now dall'ora corrente. A ogni successiva esecuzione del codice sopra riportato, le dimensioni dell'oggetto condiviso dovrebbero essere maggiori di 0 e il codice registrerà da quanti minuti è stato creato tale oggetto.

Sezioni

Visualizzazione del contenuto di un oggetto condiviso
Creazione di un oggetto SharedObject protetto

Visualizzazione del contenuto di un oggetto condiviso

Nella proprietà data degli oggetti condivisi vengono memorizzati dei valori. È possibile eseguire un'elaborazione ciclica di ciascun valore contenuto nell'istanza di un oggetto condiviso utilizzando un ciclo for..in, come illustrato nell'esempio riportato di seguito:

var so:SharedObject = SharedObject.getLocal("test");
so.data.hello = "world";
so.data.foo = "bar";
so.data.timezone = new Date().timezoneOffset;
for (var i:String in so.data)
{
    trace(i + ":\t" + so.data[i]);
}

Creazione di un oggetto SharedObject protetto

Quando si crea un oggetto SharedObject locale o remoto utilizzando getLocal() o getRemote(), è disponibile un parametro opzionale di nome secure che determina se l'accesso a questo oggetto condiviso è limitato ai file SWF inviati attraverso una connessione HTTPS. Se questo parametro viene impostato su true e il file SWF viene inviato tramite HTTPS, Flash Player crea un nuovo oggetto condiviso protetto oppure acquisisce un riferimento a un oggetto condiviso protetto esistente. Questo oggetto condiviso protetto può essere letto o scritto solo da/su file SWF distribuiti tramite HTTPS che chiamano SharedObject.getLocal() con il parametro secure impostato su true. Se questo parametro viene impostato su false e il file SWF viene inviato tramite HTTPS, Flash Player crea un nuovo oggetto condiviso protetto oppure acquisisce un riferimento a un oggetto condiviso esistente.

Questo oggetto condiviso può essere letto o scritto da/su file SWF distribuiti tramite connessioni non HTTPS. Se il file SWF viene distribuito tramite una connessione non HTTPS e si tenta di impostare il parametro su true, la creazione del nuovo oggetto condiviso (oppure l'accesso a un oggetto condiviso protetto esistente) non riesce, viene generato un errore e l'oggetto condiviso viene impostato su null. Se si tenta di eseguire lo snippet di codice seguente da una connessione non HTTPS, il metodo SharedObject.getLocal() genera un errore:

try
{
    var so:SharedObject = SharedObject.getLocal("contactManager", null, true);
}
catch (error:Error)
{
    trace("Unable to create SharedObject.");
}

Indipendentemente dal valore di questo parametro, gli oggetti condivisi creati vengono presi in considerazione per il conteggio dello spazio totale su disco concesso al dominio.


Flash CS3

 

Inviami un messaggio e-mail quando vengono aggiunti dei commenti a questa | Rapporto sui commenti

Pagina corrente: http://livedocs.adobe.com/flash/9.0_it/main/00000319.html