0

我想创建一个将令牌存储在本地共享对象中的 flash swf 文件。我需要做什么才能读取该令牌并在后端的数据库中查找它?这可能吗?

这是一个可能的情况:

  1. 用户访问我的网页
  2. 在服务器上生成一个令牌并存储在数据库中
  3. 然后将令牌保存在 LSO 中
  4. 用户离开站点(可能关闭了他的计算机)并稍后回来
  5. 读取令牌,位于数据库中并识别用户(假设令牌是链接到存储在数据库中的其他用户数据的外键)

我研究了很长时间,我发现flash可以使用LSO来存储flash电影的读取数据......这是否意味着服务器无法访问数据?

谢谢!

4

4 回答 4

1

是的,这是可能的,但您需要将其视为两种不同的操作。一方面您存储和读取 SharedObject,另一方面您与服务器通信并查询数据库。

您可以使用 ZendAmf 服务器与 PHP 进行通信。您可以将 SharedObject 数据发送到 PHP 以进行数据库查询,当数据库返回结果时,ZendAmf 会向 Flash 发送响应。

查看Lee Brimelow 的Zend Amf 视频介绍

于 2010-12-12T13:54:48.807 回答
0

本地共享对象更像本地存储而不是 cookie。从最终用户的角度来看,术语“Flash cookie”有点合适,但从技术上讲,LSO 不像 cookie,它不会在 HTTP 请求中自动发送。相反,客户端上的代码需要从 LSO 读取值并将其显式发送到服务器。

于 2010-12-12T15:49:59.753 回答
0

由于您已经用 asp.net 标记了问题,我相信存储/检索/验证 cookie 对您来说不是问题。

否则,如果您在使用 asp.net 中的 cookie 时需要帮助……网络上充满了这些方法。一个保存你的笔画:http: //msdn.microsoft.com/en-us/library/ms178194.aspx

因此,如果密码、用户详细信息等数据不是您的“令牌”所指的,那么您只需将令牌作为一种查询字符串传递即可。这可以使用 flashvars 来完成。

访问链接以获得一个很好的小贴士。

http://www.permadi.com/tutorial/flashVars/index.html


编辑

我只是指出 asp 做得很优雅。

使用从 LSO 读取的token来记住用户。

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/

但请记住,在用户不知情的情况下存储东西是不可取的。所以一定要努力让用户知道他会被网站记住。像记住我复选框之类的东西?

于 2010-12-12T14:19:59.513 回答
0

我部分同意 PatrickS;您想要的功能应该被认为是一组不同的过程。但我认为该集合的大小是 3,而不是 2:

  1. 能够在数据库中插入和检索数据的过程
  2. 能够在客户端和服务器之间传输数据的进程
  3. 能够在 LSO 中插入和检索数据的过程

所以不,服务器不能创建或访问 LSO 数据。但是,它可以代表服务器创建或访问(并发送回)。最好使用 来完成ExternalInterface,如下所示:

  1. 将处理 LSO 数据的 Actionscript 代码封装在一个方法中。
  2. 将该方法注册到它在 using 中定义的预期 Flash 应用程序的外部接口ExternalInterface.addCallback()
  3. 编译 Flash 应用程序,并在 HTML 中创建一个引用生成的 .swf 文件的元素。
  4. 创建DOMElementHTML 元素的表示,并调用 #1 中的方法,现在应该将其定义为DOMElement.

如果您不想经历所有这些麻烦,请查看BakedGoods ;它是一个 Javascript 库,它建立了一个统一的接口,可用于在所有本地和一些非本地存储设施中进行常见的存储操作,包括 Flash 本地共享对象。

有了它,创建 LSO 可以使用以下简单的代码来完成:

bakedGoods.set({
    data: [{key: "key", value: "value"}],
    storageTypes: ["flash"],
    complete: function(byStorageTypeRemovedItemKeysObj, byStorageTypeErrorObj){/*code*/}
});

检索和删除数据同样简单。相信我,我会知道的;我是它的维护者:)

于 2016-07-05T02:01:20.023 回答