在flash中登录页面,用户将用户名和密码发送到php文件(login.php)。如果登录成功,它将返回echo“success”并在那里创建会话。然后在flash中,当我点击购物按钮时,它将转到www.domain.com/shopping/index.php,index.php会进行会话检查访问者是否已登录。但似乎,我需要再次登录才能进入该页面。我在login.php中创建的会话变量在哪里?
如何在flash和php之间共享会话变量?
答案 0 :(得分:1)
我明白了。
您可以从Flash到PHP进行异步调用以获取会话。例如:
在你的Actionscript.as中:
public function session(continuation:Function)
{
var request:URLRequest = new URLRequest("backend.php");
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, continuation);
loader.load(request);
}
public function function_that_uses_session()
{
this.session(function(evt:Event)
{
var omg_session = evt.target.data;
}
}
在你的backend.php中
<?php echo $_SESSION['id']?>
您还可以为更复杂的数据结构执行JSON语法(或者如果您是受虐狂,请执行XML)。剩下的就在于你的想象力;)
我希望我在解决你的答案时不会太迟
答案 1 :(得分:0)
听起来它可能不是闪光问题?你能测试看会话数据是否在两个普通页面之间保持不变吗?
至于在PHP和ActionScript之间共享变量,最好的办法是设置AMF remoting server。您可以使用Remoting Framework向服务器发送请求,并获取本机ActionScript对象作为响应。 PHP应该能够跟踪用户会话并使用会话相关数据响应AMF请求。
希望这有帮助!
答案 2 :(得分:0)
当你向PHP发送请求时,flash应该用它传递当前的会话ID,不幸的是flash没有做同样的事情所以需要将会话ID作为URL变量传递给php页面,以便你的php获得该会话。有关详情,请查看this.