将变量FROM flash传递给HTML / php

时间:2011-03-07 21:01:50

标签: php flash flex variables flashvars

我希望也许有人可以就问题提供一些见解,我很难决定如何解决。

我有一个相当简单的Flash应用程序,用户可以在连接时创建一个快速用户名,并且用户名是在flash swf中创建的。

现在,我有一个cron作业每十分钟删除一次非活动用户名(在我的mysql数据库中,这些用户名全部由其他人在线存储和访问),这很好。但如果一群人立刻签字,它仍然会变得混乱,在cron工作清除它们之前仍有10分钟的窗口。

用户可以选择在Flash应用程序中单击注销,这很好并且效果很好。但当然很多人选择不点击注销他们只需点击浏览器x。

我已经研究了onbeforeunload和jquery的.unload,但是我仍然需要一种方法来获取用户名变量IN的flash INTO HTML,然后使用php脚本运行删除用户名mysql查询。

有更简单的解决方案吗?

如果没有,任何洞察我如何将用户名变量传递给html,以便在用户使用其用户名后保留它,以便它可以与运行php脚本的.unload函数一起使用?

编辑:::::也许有一种方法可以用php创建一个唯一的数字字符串然后将该var传递给flash以包含mysql行然后因为我已经拥有该var,因为它是在html端创建的,与卸载一起,删除具有该唯一ID的行?

如果有任何事情,这个想法将是最好的方法,如果我使用像md5(uniqid(microtime())。$ _SERVER ['REMOTE_ADDR']。$ _SERVER ['HTTP_USER_AGENT'])来制作随机iD我怎么能把结果存储在var中我可以放在flash vars param然后再次在jquery unload或javascript onbeforeunload中如果那会更好。我只是更熟悉jquery

2 个答案:

答案 0 :(得分:1)

您实际上可以调用ExternalInterface命令来填充来自SWF组件的HTML中的隐藏字段。

if (ExternalInterface.available) 
{
  var js:String = "yourJavaScriptFunction";
  var valToPass:String;
  ExternalInterface.call(js(valToPass));
}

在HTML页面中,您编写了一个javascript函数:

<script language="javascript" type="text/javascript">
function yourJavaScriptFunction(valToPass)
{
  document.getElementById('yourHiddenField').value = valToPass;
}

在您的网页启动的卸载事件中,您可以访问从SWF传递的值。

请注意,您可以在获得用户的登录凭据后立即通过SWF调用javascript函数。

希望这有帮助。

答案 1 :(得分:0)

您希望使用URLRequestURLVariablesURLLoader的组合来执行此操作。见下文。

var myData:URLRequest = new URLRequest("some.php");
myData.method = URLRequestMethod.POST;

var variables:URLVariables = new URLVariables();
variables.username = 'CREATED USERNAME';

myData.data = variables;

var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
loader.addEventListener(Event.COMPLETE, dataOnLoad);
loader.load(myData);

function dataOnLoad(evt:Event){
    trace('Completed');
}

然后,这将使用存储在'$ _POST ['username']'中的用户名调用'some.php'文件。然后,您的php脚本可以在将该用户名链接到该会话的数据库上留下印象(但是您希望这样做)。