Local Shared Objects — Флеш куки

Вступления

Приветствую жителей хабры!
Часто бывает случаи, где нас обязывают сохранять данные над которыми работает пользователь во Flash (очки игры, оформления рабочей области и т.д.).
Многие думают что нужно создавать мост между PHP и Flash. В некоторых случаях это нужно делать, для того чтобы хранить долгое время в сети данные о тех или иных действиях пользователя. Но иногда требуется на стороне клиента сохранить данные, которые предназначены только для определения того, какую функцию пользователь выбрал и в зависимости от этого предоставить ему нужную информацию. Мы сегодня рассмотрим сохранения данных на компьютере, а именно Local Shared Object (далее LSO), что в народе иногда звется флеш куки.

LSO

Немного о технологии

Local Shared Objects — обычно называемый Flash cookie, это тип данных, хранящихся в виде файла на компьютере пользователя. На данный момент все версии Flash Player используют LSO.
Обычно с настройками по-умолчанию, Flash запрашивает у пользователя разрешения о хранении локальных файлов на компьютере. Уверен многие это видели, так что некоторые из читателей уже понимают о чем я здесь пишу. Как и с обычными cookie, онлайн банки, рекламодатели или торговцы могут использовать LSO для целей учета и контроля. Flash cookie не могут быть использованы третьими лицами на других сайтах. К примеру, LSO от сайта “www.site.ru” не могут быть прочитаны сайтом “www.site.com”.
Если пользователь избавляется от cookie сайта, то уникальный ID-cookie будет присвоен новому файлу, используя данные Flash в качестве “резервного копирования”.
Пользователь может отказаться от хранения LSO используя глобальные настройки параметров хранения в Setting Manager на официальном сайте Adobe.

Setting Manager

Хранения LSO на компьютере

Расположения файлов LSO по-умолчанию, обычно зависит от операционной системы. LSO хранятся на компьютере под форматом “.SOL”.

Windows 7:
AppData/Roaming/Macromedia/#SharedObjects/

Linux:
~/.macromedia/Flash_player/

Mac OS X:
~ / Library / Preferences / Macromedia / Flash Player / # SharedObjects

От теории к практике

Я подготовил небольшой пример на ActionScript3, для того чтобы вы могли увидеть, как работать с LSO в “реальных условиях”.
Мой пример являет собой сцену на которой расположены:
  • две кнопки с именами butt и butt1 ;
  • полe ввода с именем texts ;
  • палитра цветов — pal ;
  • текстовое поле — label ;
  • а также MovieClip — fon .

Кнопки служат нам для того, чтобы очищать и заносить данные в переменные, а также сохранять их в cookie.
Поле ввода используются для того, чтобы пользователь мог ввести данные, которые хочет занести в переменную, а с помощью палитры цветов выбрать цвет фона нашей сцены.

import fl.events.ColorPickerEvent;
import flash.geom.ColorTransform;
import flash.events.MouseEvent;
 
var Save:SharedObject;
Save = SharedObject.getLocal(«application-name»);
 
label.text =«Строка: '» + Save.data.save1 + "'";
pal.selectedColor = Save.data.save2;
 
var color:ColorTransform = fon.transform.colorTransform;
 
 
fon.addEventListener(ColorPickerEvent.CHANGE, col);
butt.addEventListener(MouseEvent.CLICK, ok);
butt1.addEventListener(MouseEvent.CLICK, ex);
 
 
function ok(e:MouseEvent):void
{
Save.data.save1 =«Вы вернулись » +  texts.text;
label.text = «Привет »+texts.text;
}
 
function ex(e:MouseEvent):void
{
delete Save.data.save1;
label.text = «Exit»;
}
 
function col(e:ColorPickerEvent):void
{
Save.data.save2 = color.color = pal.selectedColor;
fon.transform.colorTransform = color;
}


Palitra

Вывод

Вот и подошли мы к концу нашего эксперимента и теперь можем смело сказать, что не стоит боятся такой штуковины как Local Shared Objects.
После проделанной работы, я сразу зашел в папку где хранятся cookie. Свой же я нашел в папочке localhost, а в нем файл application-name.sol.
Открыв его увидел следующие:
ї QTCSO application-name save2Ѓ save1=Р’С‹ вернулись Ruslan

Комментарий от Emin
Крайне желательно использовать метод flush() для принудительного сохранения. Чтобы не возникало проблем при обращении к данным.

До 100 КБ Flash не запрашивает разрешение о хранении. Если больше 100 КБ, то тогда появляется запрос.

Всем спасибо за то что прочитали мою статью!

Similar posts

AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 6

    0
    Давно была статья про методы идентификации пользователя. Было и про это, правда поверхностно. Один из плюсов — одни и те же LSO будут доступны из разных браузеров. Полезно.
      0
      Как раз заканчиваю новую игрушку (первую на AS3) и добрался до сохранений а тут это :)
      Вообще миграция неприятная штука, столько готового кода кочевало из игры в игру, а тут всё наново приходится делать.
      Спасибо.
        0
        Не за что. Если что обращайтесь, буду рад помочь.
      • UFO just landed and posted this here
          0
          1. Этот код не заработает, т.к. там скобки-ёлочки. ActionScript их не понимает.

          2. Крайне желательно использовать метод flush() для принудительного сохранения. Чтобы не возникало проблем при обращении к данным.

          3. «Обычно с настройками по-умолчанию, Flash запрашивает у пользователя разрешения о хранении локальных файлов на компьютере.»

          До 100 КБ Flash не запрашивает разрешение о хранении. Если больше 100 КБ, то тогда появляется запрос.

          В статью надо было бы добавить про очистку, про изменение положения файлов, про ограничение доступа.

            0
            Странно… но в исходнику их нету, перед отправкой я проверял исходник и скобки-ёлочки не видел…

          Only users with full accounts can post comments. Log in, please.