将变量从flash传递到HTML/php
我希望有人能给我提供一些关于一个问题的见解,我正艰难地决定如何解决这个问题 我有一个相当简单的flash应用程序,用户可以在连接时快速创建用户名,用户名是在flash swf中创建的 现在,我有一个cron任务,每十分钟删除一次不活动的用户名(在我的mysql数据库中,这些用户名都被其他在线用户存储和访问),这很好。但是,如果一群人同时签字,它仍然会变得杂乱无章,在cron工作清理他们之前还有10分钟的时间 用户可以选择在flash应用程序中单击“注销”,这很好,效果也很好。但当然,许多人选择不点击注销,他们只是点击浏览器x 我已经研究了onbeforeunload和jquery的.unload,但我仍然需要一种方法将flash中的用户名变量输入HTML,然后使用php脚本运行delete username mysql查询 有更简单的解决办法吗 如果没有,那么我有没有了解到在用户创建用户名后如何将username变量传递给html以保留它,这样它就可以参与运行php脚本的.unload函数 编辑:可能有没有一种方法可以用php创建一个唯一的数字字符串,然后将该变量传递给flash以包含在mysql行中,因为我已经有了该变量,因为它是在html端创建的,就在卸载时,让它删除具有唯一id的行将变量从flash传递到HTML/php,php,flash,apache-flex,variables,flashvars,Php,Flash,Apache Flex,Variables,Flashvars,我希望有人能给我提供一些关于一个问题的见解,我正艰难地决定如何解决这个问题 我有一个相当简单的flash应用程序,用户可以在连接时快速创建用户名,用户名是在flash swf中创建的 现在,我有一个cron任务,每十分钟删除一次不活动的用户名(在我的mysql数据库中,这些用户名都被其他在线用户存储和访问),这很好。但是,如果一群人同时签字,它仍然会变得杂乱无章,在cron工作清理他们之前还有10分钟的时间 用户可以选择在flash应用程序中单击“注销”,这很好,效果也很好。但当然,许多人选择不
如果有人认为这是最好的方法,如果我使用md5(uniqid(microtime())。$\u SERVER['REMOTE\u ADDR']。$\u SERVER['HTTP\u USER\u AGENT'])之类的工具为了生成一个随机iD,我如何将结果存储在一个变量中,我可以将结果放在flashvars参数中,然后再放在jquery unload或javascript onbeforeuload中,如果这样更好的话。我只是更熟悉jquery,你想使用和的组合来实现这一点。见下文
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”文件,其中用户名存储在“$\u POST['username']”中。然后,您的php脚本可以在数据库上留下一个印象,将该用户名链接到该会话(不管您想怎么做)。您实际上可以调用ExternalInterface命令来填充来自SWF组件的HTML中的hiddenfield
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;
}
函数yourJavaScriptFunction(valToPass)
{
document.getElementById('yourHiddenField')。value=valToPass;
}
从页面触发的卸载事件中,您可以访问从SWF传递的值
请注意,一旦获得用户的登录凭据,就可以从SWF调用javascript函数
希望这有帮助。使用ExternalInterface从Flash调用JavaScript方法[反之亦然]。我不清楚这是否能解决你的问题。你提到sessions这个词,让我觉得。。。也许我应该在加载页面时创建一个sessionid,也许使用类似md5(uniqid(microtime())。$\u SERVER['REMOTE\u ADDR']。$\u SERVER['HTTP\u USER\u AGENT'])然后,当用户名添加到数据库中时,我可以将该变量加载到flash中……然后,我在HTML端有sessionID,因为它是在那里创建的……并且只使用它来引用在我的jquery上使用mysql删除的行。卸载函数你肯定可以做到这一点。不过,我建议您更改系统,以便服务器生成用户名而不是闪存。您可以调用php脚本(使用上述方法)。该脚本可以将您提到的会话信息放在一起,在数据库中插入用户名和会话的记录,然后将uid返回到您的flash应用程序。我认为外部接口正是我所需要的!我让它工作了!谢谢直到现在才知道这件事。