поиск

Работа с сookies в as3 приложениях

Намусорил: Алексей «Vooparker» Аникутин
В категории: ActionScript 3

Для хранения информации на стороне клиента в ActionScript предусмотрен объект SharedObject — своеобразный аналог всем известных Cookies. Но возникают ситуации, когда вашему as3 приложению было бы неплохо получить доступ именно к cookies (скажем сайт имеет две версии — html и flash, и вы хотите сохранить какие-то предпочтения пользователя как для html так и для flash версии сайта). Конечно, данную задачу можно решить различными способами, и один из них — это предоставить вашему приложению возможность работать с cookies.

Cookie — это небольшой объем именованных данных, сохраняемых браузером и связанных с определенной веб-страницей или сайтом. В ActionScript не предусмотрено возможностей работы с cookies, однако этими возможностями обладает Javascript, а значит с помощью ExternalInterface можем реализовать необходимый функционал для работы с cookies и в ActionScript. В итоге у меня получился небольшой класс CookieManager.

Чтобы установить пользователю cookie, необходимо воспользоваться методом CookieManager.store(), который в качестве основных параметром принимает имя и значение cookie. Что касается остальных параметров, то тут думаю небесполезным будет сделать кое какие пояснения для тех, кто раньше не сталкивался с cookies.

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

Если вы создадите cookie следующим образом:

Actionscript:
  1. CookieManager.store("userName", "Vooparker");

То данная информация будет доступна до момента закрытия пользователем браузера. Если мы захотим продлить время жизни cookie, мы должны передать третий параметр, содержащий дату, до которой cookie будет храниться браузером пользователя. Например, сохраняем cookie сроком на неделю:

Actionscript:
  1. CookieManager.store("userName", "Vooparker", new Date(new Date().getTime() + 1000*60*60*24*7));

Четвертый и пятый аргумент — path и domain — позволяют управлять областью видимости cookie.

Шестой аргумент — secure — отвечает за безопасность передачи cookie. По умолчанию cookie передаются по не защищенному http-соединению, однако если cookie будет помечен как безопасный, то он будет передаваться только через защищенный протокол.

Помните: браузер не обязан сохранять более 20 cookie на один веб-сервер или 4KB данных на один cookie. Напоследок приведу пример использования CookieManager:

Actionscript:
  1. package 
  2. {
  3.     import ru.riafactory.net.CookieManager;
  4.  
  5.     public class CookieManagerExample
  6.     {
  7.         public function CookieManagerExample ()
  8.         {
  9.             // Сохраняем cookie на неделю
  10.             CookieManager.store("userName", "Vooparker", new Date(new Date().getTime() + 1000*60*60*24*7));
  11.            
  12.             // Считываем значение cookie по его имени
  13.             var userName:String = CookieManager.read("userName");
  14.            
  15.             // Получаем все доступные и действительные cookie в виде объекта
  16.             var cookies:Object = CookieManager.cookies;
  17.            
  18.             // Удаляем cookie
  19.             CookieManager.remove("userName");   
  20.         }
  21.     }
  22. }

На сегодня все :)
Удачи!



Kомментариев - 3 к «Работа с сookies в as3 приложениях»

Что лучше: Singleton или использование статических членов класса? | Garbage Collector [22 октября, 2007 в 14:52]

[...] Обязательно прочтите статью «Работа с сookies в as3 приложениях» от Алексея «Vooparker» Аникутина, в которой как раз и [...]

itERRatOR [19 декабря, 2007 в 13:59]

Проблема, с которой столкнулся я, когда использовал материалы этой статьи: не работало долговременное хранение cookies в IE и в Opera. Огнелис работал нормально :)
То есть данные не хранились тот период времени, который я указывал в store, а уничтожались вместе с закрытием браузера.
Обсуждения по этой теме можно увидеть на ruflex

Для тех, кому интересно сразу решение данной проблемы, то приведу малость модифицированный код метода store:

Actionscript:
  1. public static function store (name:String, value:String, expires:Date = null,
  2.                                       path: String = null, domain: String = null, secure:Boolean = false):void
  3. {
  4.     if(!cookiesEnabled)
  5.         throw new Error("Cookies is disabled. Check if ExternalInterface is available and cookies is enabled.");
  6.     var cookieString:String = name + "=" + escape(value);
  7.     if(expires != null) cookieString += "; expires=" + expires.toUTCString();
  8.     if(path != null)    cookieString += "; path=" + path;
  9.     if(domain != null)  cookieString += "; domain=" + domain;
  10.     if(secure)    cookieString += "; secure";
  11.     ExternalInterface.call("function(){document.cookie=\"" + cookieString + "\"}");
  12. }

Если кто не увидел разницы, читайте всё же ruflex! :)

Компиляция совместимых с Flash CS3 swc-библиотек с помощью Flex 3 SDK | Garbage Collector [20 июня, 2008 в 19:22]

[...] простых, но, на мой взгляд, весьма полезных класса — CookieManager и FirebugConsole. Начнем с создания нового проекта — File → [...]

Написать комментарий:

 

Bы можете использовать следующие теги для форматирования: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>



User's collector

Внимание!
Эта опция станет доступной только после того как вы авторизуетесь.


 запомнить меня 
Я новый пользователь

На правах рекламы

Info: brequet - for you; free online casino. poker Online Poker Spielen - Pokern; Рекомендуем - лучшая установка пластиковых окон; свадебные платья для беременных; раскрутка сайтов в киеве