Чтение и обработка данных из флеш-куки
Я хочу создать флэш-SWF-файл, который будет хранить токен в Local Shared Object. Что мне нужно сделать, чтобы прочитать этот токен и посмотреть его в базе данных на серверной части? Это вообще возможно?
Вот возможный сценарий:
- Пользователь заходит на мою веб-страницу
- Токен генерируется на сервере и сохраняется в базе данных
- Затем токен сохраняется в LSO
- Пользователь покидает сайт (возможно, выключает свой компьютер) и возвращается позже
- Токен считывается, размещается в базе данных, и пользователь распознается (допустим, что токен является внешним ключом, который ссылается на другие пользовательские данные, хранящиеся в БД).
Я исследовал это довольно давно, и все, что я обнаружил, это то, что флэш-память может использовать LSO для хранения прочитанных данных для флэш-фильмов... Означает ли это, что данные не могут быть доступны серверу?
Спасибо!
4 ответа
Да, это возможно, но вам нужно рассматривать это как две разные операции. С одной стороны, вы сохраняете и читаете SharedObject, с другой стороны, вы общаетесь с сервером и запрашиваете базу данных.
Вы можете использовать ZendAmf сервер для связи с PHP. Вы сможете отправить данные SharedObject в PHP, чтобы выполнить запрос к базе данных. Когда база данных возвращает результат, ZendAmf отправляет ответ Flash.
Посмотрите это видео-представление Zend Amf от Lee Brimelow
Локальные общие объекты больше похожи на локальное хранилище, чем на куки. Термин "Flash cookie" является своего рода подходящим с точки зрения конечного пользователя, но технически LSO не похож на cookie, он не отправляется автоматически в HTTP-запросах. Вместо этого код на клиенте должен прочитать значение из LSO и явно отправить его на сервер.
Я частично согласен с PatrickS; функциональность, которую вы хотите, должна рассматриваться как набор отдельных процессов. Но я думаю, что размер этого набора 3, а не 2:
- Процесс, способный вставлять и извлекать данные в базу данных
- Процесс, способный передавать данные между клиентом и сервером
- Процесс, способный вставлять и извлекать данные в LSO
Поэтому нет, данные LSO не могут быть созданы или доступны для сервера. Однако он может быть создан или доступен (и отправлен обратно) от имени сервера. И это лучше всего сделать с использованием ExternalInterface
, вот так:
- Инкапсулируйте в метод код ActionScript, который обрабатывает данные LSO.
- Зарегистрируйте метод во внешнем интерфейсе предполагаемого приложения Flash, которое определено в использовании.
ExternalInterface.addCallback()
, - Скомпилируйте приложение Flash и создайте в своем HTML элемент, который ссылается на результирующий файл.swf.
- Создать
DOMElement
представление элемента HTML и вызов метода в #1, который теперь должен быть определен как членDOMElement
,
Проверьте BakedGoods, если вы не хотите, чтобы пройти через все это; это библиотека Javascript, которая устанавливает единый интерфейс, который можно использовать для выполнения общих операций хранения во всех собственных и некоторых не собственных средствах хранения, включая Flash Local Local Shared Objects.
С его помощью создание LSO может быть выполнено с помощью простого кода:
bakedGoods.set({
data: [{key: "key", value: "value"}],
storageTypes: ["flash"],
complete: function(byStorageTypeRemovedItemKeysObj, byStorageTypeErrorObj){/*code*/}
});
Получение и удаление данных так же просто. Поверьте мне на все это, я бы знал; я его сопровождающий:)
Поскольку вы пометили вопрос с помощью asp.net, я считаю, что сохранение / получение / проверка файла cookie не будет проблемой для вас.
В противном случае, если вам нужна помощь в работе с файлами cookie в asp.net..... в сети полно тех, как это сделать. Один, чтобы сохранить ваши штрихи: http://msdn.microsoft.com/en-us/library/ms178194.aspx
Таким образом, если данные, такие как пароли, данные пользователя и т. Д., Не являются тем, к чему относится ваш "токен", то все, что вам нужно, - это передать токен в виде строки запроса. Это можно сделать с помощью flashvars.
Посетите ссылку для хорошей маленькой беседы.
http://www.permadi.com/tutorial/flashVars/index.html
редактировать
Я просто указал на то, что жопа делает это элегантно.
Используйте токен, прочитайте из LSO, чтобы запомнить пользователя.
var token:SharedObject;
token = SharedObject.getLocal("UserToken");
if (token.data.value==undefined)
token.data.value = ?; // Pass the User token here while writing
else
? = token.data.value; // Use the values while reading
Если вы хотите работать с примером локального общего объекта, выполните следующие действия: http://www.emanueleferonato.com/2008/12/28/understanding-as3-shared-objects/
Но, пожалуйста, помните, что хранить вещи без знания пользователей не рекомендуется. Поэтому постарайтесь сообщить пользователю, что он запомнится на сайте. Что-то вроде помните меня флажок?