如何在Flash AS3和PHP之间共享会话?

时间:2009-10-14 10:39:13

标签: php flash session

在flash中登录页面,用户将用户名和密码发送到php文件(login.php)。如果登录成功,它将返回echo“success”并在那里创建会话。然后在flash中,当我点击购物按钮时,它将转到www.domain.com/shopping/index.php,index.php会进行会话检查访问者是否已登录。但似乎,我需要再次登录才能进入该页面。我在login.php中创建的会话变量在哪里?

如何在flash和php之间共享会话变量?

3 个答案:

答案 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.