将变量从Flash传递到HTML / php

Passing variable FROM flash to HTML/php

我希望也许有人可以对我在决定如何解决方面遇到困难的问题提供一些见解。

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

现在,我有一个cron作业,每隔十分钟删除一次无效的用户名(在我的mysql数据库中,这些用户名全部由其他在线用户存储和访问),这很好。但是,如果一堆人立即签收,仍然会很混乱,在cron作业清除他们之前还有10分钟的时间。

用户可以选择在Flash应用程序中单击注销,这很好而且效果很好。但是当然,许??多人选择不单击注销,而只是单击浏览器x。

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

有没有更简单的解决方案?

如果没有,关于如何在用户输入用户名后如何将username变量传递给html以保留它,以便它可以与运行php脚本的.unload函数有关的任何见解?

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

如果有人认为这个想法是最好的方法,并且如果我使用了类似md5(uniqid(microtime())的东西。$ _SERVER ['REMOTE_ADDR']。$ _SERVER ['HTTP_USER_AGENT'])来进行随机iD,可以将结果存储在一个var中,如果更好的话,我可以将其放在flash vars参数中,然后再放到jQuery卸载或javascript onbeforeunload中。我只是更熟悉jquery


实际上,您可以调用ExternalInterface命令来填充来自SWF组件的HTML中的hiddenfield。

1
2
3
4
5
6
if (ExternalInterface.available)
{
  var js:String ="yourJavaScriptFunction";
  var valToPass:String;
  ExternalInterface.call(js(valToPass));
}

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

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

从页面触发的卸载事件中,您可以访问从SWF传递的值。

请注意,一旦获得用户的登录凭据,就可以从SWF调用javascript函数。

希望这可以帮助。


您要使用URLRequest,URLVariables和URLLoader的组合来执行此操作。 见下文。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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');
}

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