刷新期间的会话问题

时间:2009-05-28 13:14:52

标签: php mysql flex

当我刷新我的flex应用程序时,页面不会保持其状态并返回登录页面。我不确定为什么会发生这种情况,这是我的代码处理会话。

公共功能doLogin($ username,$ password){

        include("connection.php");
        session_start();
        session_register("session");


        $query = "SELECT *
                  FROM users
                  WHERE username = '".mysql_escape_string($username)."'
                  AND password = '".mysql_escape_string($password)."'";
        $result = mysql_fetch_array(mysql_query($query));
        if(!$result) {
        session_unset();
        return 'no';
        }
        else 
            {
        $session['id']=session_id();
        $session['username']=$username;
        return 'yes';
            }
        }

    public function Logout() { 

    session_start();
    session_register("session");
    session_unset();
    session_destroy();
    return 'logout';        
    }

我应该在成功登录后加载的Flex窗格上执行某些操作。

4 个答案:

答案 0 :(得分:0)

成功登录后重定向回到其他页面。

例如

if(doLogin($user,$pass) == 'yes')
{
    Header("Location: index.php");
    exit;
}

答案 1 :(得分:0)

刷新是指重新加载页面(F5)。如果是这样那就是原因!重新加载/刷新将重新初始化所有内容。因此,当您重新加载/刷新时,无论您的起始状态如何(登录)都会显示。

如果您希望维护应用程序状态,那么每次状态更改时您都必须将其详细信息保存到数据库,然后当用户点击起始页面时重新加载其会话。

如果浏览器被刷新/重新加载(或崩溃等),那么您无法让应用程序注销用户,因此您必须在登录页面被点击时恢复到上次知道的状态。如果用户没有正确登录,这当然会产生重大安全问题。

答案 2 :(得分:0)

您是否在Flex应用程序中维护会话ID,并将其与新请求一起发送?

你能测试吗?确认在Flex内的每个请求上从PHP脚本返回相同的会话ID?

您是否在Flex应用程序之外的cookie中持久保存会话ID?如果没有,您将在页面刷新时丢失会话ID。您需要存储在本地存储或cookie中,并在Flex应用程序启动时访问它。

答案 3 :(得分:0)

你的问题在这里

   else 
                    {
            $session['id']=session_id();
            $session['username']=$username;
            return 'yes';
                    }
            }

$ session未定义...如果要在会话数组中存储内容,请使用$ _SESSION

相关问题