我希望也许有人可以就问题提供一些见解,我很难决定如何解决。
我有一个相当简单的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
答案 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)
您希望使用URLRequest,URLVariables和URLLoader的组合来执行此操作。见下文。
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脚本可以在将该用户名链接到该会话的数据库上留下印象(但是您希望这样做)。