Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将变量从flash传递到HTML/php_Php_Flash_Apache Flex_Variables_Flashvars - Fatal编程技术网

将变量从flash传递到HTML/php

将变量从flash传递到HTML/php,php,flash,apache-flex,variables,flashvars,Php,Flash,Apache Flex,Variables,Flashvars,我希望有人能给我提供一些关于一个问题的见解,我正艰难地决定如何解决这个问题 我有一个相当简单的flash应用程序,用户可以在连接时快速创建用户名,用户名是在flash swf中创建的 现在,我有一个cron任务,每十分钟删除一次不活动的用户名(在我的mysql数据库中,这些用户名都被其他在线用户存储和访问),这很好。但是,如果一群人同时签字,它仍然会变得杂乱无章,在cron工作清理他们之前还有10分钟的时间 用户可以选择在flash应用程序中单击“注销”,这很好,效果也很好。但当然,许多人选择不

我希望有人能给我提供一些关于一个问题的见解,我正艰难地决定如何解决这个问题

我有一个相当简单的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的行


如果有人认为这是最好的方法,如果我使用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应用程序。我认为外部接口正是我所需要的!我让它工作了!谢谢直到现在才知道这件事。