Speichern von lokalen Daten

Ein gemeinsames Objekt, das gelegentlich auch als „Flash-Cookie" bezeichnet wird, ist eine Datendatei, die von den von Ihnen besuchten Sites auf Ihrem Computer erstellt werden kann. Gemeinsame Objekte werden auch häufig zum Aufwerten Ihres Browsing-Erlebnisses verwendet - z. B. ermöglichen gemeinsame Objekte, das Erscheinungsbild einer häufig besuchten Website zu personalisieren. Gemeinsame Objekte allein können nichts mit oder an den Daten auf Ihrem Computer ausführen. Wichtiger ist jedoch, dass gemeinsame Objekte niemals auf Ihre E-Mail-Adresse oder andere persönliche Daten zugreifen oder diese speichern - es sei denn, Sie stellen diese Informationen willentlich zur Verfügung.

Neue gemeinsame Objektinstanzen können mit den statischen Methoden SharedObject.getLocal() oder SharedObject.getRemote() erstellt werden. Die getLocal()-Methode versucht, ein lokales permanentes gemeinsames Objekt zu laden, das nur dem aktuellen Client zur Verfügung steht, während die getRemote()-Methode versucht, ein externes gemeinsames Objekt zu laden, das über einen Server wie den Flash Media Server von mehreren Clients gemeinsam genutzt werden kann. Wenn das gemeinsame lokale oder Remote-Objekt nicht vorhanden ist, wird mit den Methoden getLocal() und getRemote() eine neue SharedObject-Instanz erstellt.

Im folgenden Code wird versucht, ein lokales gemeinsames Objekt namens test zu laden. Wenn dieses gemeinsame Objekt nicht existiert, wird ein neues gemeinsames Objekt mit diesem Namen erstellt.

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

Wenn kein gemeinsames Objekt mit der Bezeichnung „test" gefunden werden kann, wird ein neues mit einer Größe von 0 Byte erstellt. Wenn das gemeinsame Objekt bereits existiert, wird die aktuelle Größe (in Byte) zurückgegeben.

Sie können Daten in einem gemeinsamen Objekt speichern, indem Sie dem Datenobjekt Werte zuweisen. Dies wird im folgenden Beispiel gezeigt:

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

Falls ein gemeinsames Objekt mit dem Namen test und dem Parameter now bereits existiert, wird der vorhandene Wert überschrieben. Mit der Eigenschaft SharedObject.size können Sie feststellen, ob ein gemeinsames Objekt bereits existiert. Dies wird im folgenden Beispiel gezeigt:

var so:SharedObject = SharedObject.getLocal("test");
if (so.size == 0)
{
    // Das gemeinsame Objekt ist nicht vorhanden.
    trace("created...");
    so.data.now = new Date().time;
}
trace(so.data.now);
trace("SharedObject is " + so.size + " bytes");

Der vorangegangene Code verwendet den Parameter size, um festzustellen, ob bereits eine gemeinsame Objektinstanz mit dem angegebenen Namen vorhanden ist. Wenn Sie den folgenden Code testen, werden Sie feststellen, dass das gemeinsame Objekt bei jeder Ausführung des Codes neu erstellt wird. Damit ein gemeinsames Objekt auf der Festplatte des Benutzers gespeichert wird, müssen Sie die SharedObject.flush()-Methode explizit aufrufen. Dies wird im folgenden Beispiel gezeigt:

var so:SharedObject = SharedObject.getLocal("test");
if (so.size == 0)
{
    // Das gemeinsame Objekt ist nicht vorhanden.
    trace("created...");
    so.data.now = new Date().time;
}
trace(so.data.now);
trace("SharedObject is " + so.size + " bytes");
so.flush();

Wenn Sie die flush()-Methode zum Schreiben gemeinsamer Objekte auf die Festplatte eines Benutzers verwenden, müssen Sie wie im folgenden Beispiel überprüfen, ob der Benutzer die lokale Speicherung mit dem Flash Player-Einstellungsmanager (www.adobe.com/support/documentation/de/flashplayer/help/settings_manager07.html) explizit deaktiviert hat:

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

Werte können aus einem gemeinsamen Objekt abgerufen werden, indem der Name der Eigenschaft in der Eigenschaft data des gemeinsamen Objekts angegeben wird. Wenn Sie beispielsweise den folgenden Code ausführen, zeigt Flash Player an, vor wie vielen Minuten die SharedObject-Instanz erstellt wurde:

var so:SharedObject = SharedObject.getLocal("test");
if (so.size == 0)
{
    // Das gemeinsame Objekt ist nicht vorhanden.
    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();

Beim ersten Ausführen des vorangegangenen Codes wird eine neue SharedObject-Instanz namens test mit einer Ursprungsgröße von 0 Byte erstellt. Da die Ursprungsgröße 0 Bytes beträgt, wird die if-Anweisung als true ausgewertet und dem lokalen gemeinsamen Objekt wird eine neue Eigenschaft namens now hinzugefügt. Das Alter des gemeinsamen Objekts wird durch Subtrahieren des Wertes der Eigenschaft now von der aktuellen Zeit errechnet. Bei jeder folgenden Ausführung des vorangegangenen Codes muss die Größe des gemeinsamen Objekts größer als 0 sein. Der Code verfolgt, vor wie vielen Minuten das gemeinsame Objekt erstellt wurde.

Unterthemen

Anzeigen des Inhalts eines gemeinsamen Objekts
Erstellen eines sicheren SharedObject

Anzeigen des Inhalts eines gemeinsamen Objekts

Werte werden in der data-Eigenschaft von gemeinsamen Objekten gespeichert. Mit einer for..in-Schleife können Sie jeden Wert in einem gemeinsamen Objekt durchlaufen, wie im folgenden Beispiel dargestellt:

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]);
}

Erstellen eines sicheren SharedObject

Wenn Sie mit getLocal() oder getRemote() ein lokales oder remotes SharedObject erstellen, gibt es einen optionalen Parameter namens secure, mit dem festgelegt werden kann, ob der Zugriff auf dieses gemeinsame Objekt auf SWF-Dateien beschränkt ist, die über eine HTTPS-Verbindung bereitgestellt werden. Wenn dieser Parameter auf true eingestellt ist und Ihre SWF-Datei über HTTPS bereitgestellt wird, erstellt Flash Player ein neues sicheres gemeinsames Objekt oder ruft einen Verweis auf ein vorhandenes sicheres gemeinsames Objekt ab. An diesem sicheren gemeinsamen Objekt können nur durch SWF-Dateien Lese- oder Schreibvorgänge durchgeführt werden, die über HTTPS bereitgestellt werden und die SharedObject.getLocal() mit der Einstellung „secure" für den true-Parameter aufrufen. Wenn dieser Parameter auf false eingestellt ist und Ihre SWF-Datei über HTTPS bereitgestellt wird, erstellt Flash Player ein neues gemeinsam genutztes Objekt oder ruft einen Verweis auf ein vorhandenes gemeinsam genutztes Objekt ab.

An diesem gemeinsam genutzten Objekt können nur SWF-Dateien Lese- oder Schreibvorgänge durchführen, die über andere Verbindungen als HTTPS bereitgestellt werden. Wenn die SWF-Datei über eine andere Verbindung als HTTPS bereitgestellt wird und Sie diesen Parameter auf true einstellen, schlägt die Erstellung des neuen gemeinsamen Objekts (bzw. der Zugriff auf ein zuvor erstelltes sicheres gemeinsames Objekt) fehl, es wird ein Fehler ausgelöst und das gemeinsame Objekt auf null gesetzt. Wenn Sie versuchen, den folgenden Codeausschnitt über eine andere Verbindung als HTTPS auszuführen, löst die SharedObject.getLocal()-Methode einen Fehler aus:

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

Unabhängig vom Wert dieses Parameters belegen die erstellten gemeinsamen Objekte einen Teil des einer Domäne zugewiesenen Speicherplatzes.


Flash CS3

 

Eine E-Mail an mich senden, wenn dieser Seite Kommentare hinzugefügt werden | Kommentarbericht

Aktuelle Seite: http://livedocs.adobe.com/flash/9.0_de/main/00000319.html