2009/06/30 17:13

Web

    

SharedObject ~getLocal()~

FLASHでクッキーします。
とは言っても、FMS(メディアサーバー)を使用したことある人にとってはお馴染みのクラスを使用します。
まぁ最初にFMSをいじってた人間の方が稀か・・・

SharedObject・・・FMSに接続する際はgetRemote()で接続して、リモート共有オブジェクトがあるかどうか調べますが、今回はgetLocal()でローカルに共有オブジェクトが存在するかどうかを調べ、ない場合は作成してデータを保存することができます。

まぁ、基本的にコマンドがgetRemote()getLocal()で違うだけ。捉え方としてはほとんど一緒だと考えて間違いないでしょう。

ただし、Javascriptでクッキーを使用したことある人なら分かると思いますが、残念ながらFLASHクッキーには有効期限というものが存在しません。つまり、Dateクラスを使用して自分で設定して自分で計算して書き込んで、次読み込んだ時にそれを取得して自分で消せってことです。
正確に言うと、Flash Playerの設定でローカル共有オブジェクト・・・つまりFLASHクッキーの容量を設定できるので、そこがいっぱいになると勝手に消されたりするらしい。そういう意味でなら有効期限はあります。

まぁDateで簡単に設定出来るわけだからしょうがないと思いますが、Javascriptみたいにブラウザを閉じたらクッキーも削除・・・ってのが出来ないのが残念。

理由は明白で、FLASHクッキーはブラウザで管理していないから・・・だと思われます。
予測ですが、まぁきっとそうでしょう。
Javascriptで埋め込まれたクッキーはブラウザで確認して、消すこともできるけど、FLASHクッキーはブラウザで管理できません。

どこにあるかと言うと・・・WidowsXPでは、
C:\Documents and Settings\ユーザー名\Application Data\Macromedia\Flash Player\#SharedObjects\GNLP7EF7
にあります。

いや・・・僕はそこにありました。他の人は知りません。
Flash Playerの設定で変更できるのかもしれないし、OSによっても当然違うでしょう。
とりあえずそこら辺探してみてください。しかし、よく分からないのが、末尾の\GNLP7EF7これって何ですかね?

何故こんな名前のディレクトリなのか・・・全くもって不明。
ひょっとしたらPlayerのバージョンとかで違うのかもしれない。

とにかく、その中にさらにサブフォルダがあって、ローカルで何も設定せずに作成すればlocalhostというフォルダにあるはず。

FLASHクッキーはclear()で消去、flush()で即時書き込みが出来るので、ディレクトリを開いて見てればタイムリーに書かれたり消されたりしているのを確認することができます。
(余談ですが、基本的にローカル共有オブジェクトはflush()で書き込まないと、FLASHを閉じたりしない限り書き込まれませんので注意)

クッキーの拡張子は.sol
なんだこりゃ?とりあえず、文字化けしたりしますが、テキストエディタで開けるので見れるはず。

しかし、FLASHクッキー置き場を見てみましたが、びっくりするくらいファイルが沢山。
う~む・・・気付かないうちにこんなに沢山。悪意を感じますねw

TrackBack :

Comments






使用可能タグ: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>