当我刷新我的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窗格上执行某些操作。
答案 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