0

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

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

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

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

我已经查看了 onbeforeunload 和 jquery 的 .unload,但我仍然需要一种方法来获取闪存中的用户名变量 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 参数中,然后再放在 jquery unload 或 javascript onbeforeunload 中,如果这样会更好的话。我只是更熟悉 jquery

4

2 回答 2

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 函数。

希望这可以帮助。

于 2011-03-07T22:16:26.943 回答
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');
}

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

于 2011-03-07T21:36:56.550 回答