从Flash cookie中读取和处理数据

时间:2010-12-12 02:26:28

标签: asp.net ajax flash cookies lso

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

这是一个可能的场景:

  1. 用户访问我的网页
  2. 在服务器上生成令牌并存储在数据库中
  3. 然后将令牌保存在LSO中
  4. 用户离开网站(可能会关闭他的电脑),稍后再回来
  5. 读取令牌,位于数据库中并识别用户(假设令牌是链接到存储在数据库中的其他用户数据的外键)
  6. 我研究了很长一段时间,我发现闪存可以使用LSO来存储闪存电影的读取数据......这是否意味着服务器无法访问数据?

    谢谢!

4 个答案:

答案 0 :(得分:1)

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

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

由Lee Brimelow检查Zend Amf video introduction

答案 1 :(得分:0)

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

否则也是如此,如果你需要帮助在asp.net中使用cookies,那么网络就是那些如何使用。一个保存你的笔画: http://msdn.microsoft.com/en-us/library/ms178194.aspx

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

访问该链接以获得良好的小声音。

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


修改

我只是指出asp优雅地做到了。

使用令牌,从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/

但是请记住,在没有用户知识的情况下存储东西是不可取的。因此,请努力让用户知道他将被网站记住。像记住我的复选框?

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

  1. 能够在数据库中插入和检索数据的过程
  2. 能够在客户端和服务器之间传输数据的过程
  3. 能够在LSO中插入和检索数据的过程
  4. 所以不,服务器无法创建或访问LSO数据。但是,它可以代表创建或访问(并发回)服务器。最好使用ExternalInterface,如下所示:

    1. 封装在一个方法中,处理LSO数据的Actionscript代码。
    2. 使用ExternalInterface.addCallback()定义的预期Flash应用程序的外部接口注册方法。
    3. 编译Flash应用程序,并在HTML中创建一个引用结果.swf文件的元素。
    4. 创建HTML元素的DOMElement表示,并调用#1中的方法,现在应该将其定义为DOMElement的成员。
    5. 如果您不想完成所有这些操作,请查看BakedGoods;它是一个Javascript库,它建立了一个统一的接口,可用于在所有本机和一些非本机存储设施中执行常见的存储操作,包括Flash本地共享对象。

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

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

      检索和删除数据同样简单。我知道,请相信我所有这一切;我是它的维护者:))