2010-12-12 18 views
0

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

这里是一个可能的场景:

  1. 用户访问我的网页
  2. 令牌是在服务器上生成并存储在数据库中,然后
  3. 令牌保存在LSO
  4. 用户离开该网站(可能关闭他的电脑),并在以后回来
  5. 令牌被读取,位于数据库和用户被识别(可以说,该令牌是一个外键链接到其他用户数据存储在分贝)

我研究了很长一段时间,我发现所有我可以使用LSO来存储闪存电影的读取数据......这是否意味着数据不能被服务器访问?

谢谢!

回答

1

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

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

入住这Zend Amf video introduction李布赖姆洛

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读取以记住用户。

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/

但请别忘记保存的东西没有用户的知识是不可取的。因此,请尽量让用户知道他会被网站记住。像记住我的复选框?

+0

你是对的,用asp.net保存cookies不是问题。不过,我提到LSO只是为了使用更简单的单词而使用cookie。我特别需要将用户令牌存储在LSO中,原因如下:1.常规Cookie是浏览器特定的。 2.用户可以轻松删除常规cookie。我需要识别电脑。 – James 2010-12-13 04:11:30

+0

请阅读您的解决方案的编辑。希望有所帮助。 – loxxy 2010-12-13 05:55:35

0

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

+0

“客户端上的代码需要从LSO读取值并明确地将其发送到服务器。” - 怎么样? – James 2010-12-13 04:09:03

0

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

  1. 能够在数据库
  2. 能够发送一个客户机和一个服务器
  3. A之间的数据的方法,插入和检索数据的方法能够在LSO中插入和检索数据的过程

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

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

如果你不想经历所有这些,它是一个Javascript库,它建立了一个统一的接口,可用于在所有本机和一些非本地存储设施(包括Flash本地共享对象)中执行公共存储操作。

有了它,创建LSO可以与代码一样简单来完成:

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

检索和删除数据是很容易。相信我所有这些,我会知道;我是它的维护者:)