Php $\u会话变量不';自动登录时无法保存
我有一个与数据库通信的iPhone应用程序,其中包括用户数据(即用户名、电子邮件、密码),我为此创建了一个PHP API,并在iPhone应用程序中连接到该API。我这里的问题是:我将用户id保存在Php $\u会话变量不';自动登录时无法保存,php,mysql,database,session-variables,Php,Mysql,Database,Session Variables,我有一个与数据库通信的iPhone应用程序,其中包括用户数据(即用户名、电子邮件、密码),我为此创建了一个PHP API,并在iPhone应用程序中连接到该API。我这里的问题是:我将用户id保存在$\u SESSION中,以便在需要时稍后还原,当我手动登录时,$\u SESSION变量可以轻松保存,我可以随时调用它们,但当应用程序自动登录时(这显然是在第一次登录后,用户名和密码存储在iPhone钥匙链中),$\u SESSION变量没有被保存,我注意到它们只在我注销后被存储和调用,没有任何问题
$\u SESSION
中,以便在需要时稍后还原,当我手动登录时,$\u SESSION
变量可以轻松保存,我可以随时调用它们,但当应用程序自动登录时(这显然是在第一次登录后,用户名和密码存储在iPhone钥匙链中),$\u SESSION
变量没有被保存,我注意到它们只在我注销后被存储和调用,没有任何问题,这转化为SESSION\u destroy();
,下面是我用于登录和注销的php代码
session_start();
function login($user, $pass) {
$result = query("SELECT IdUser, username FROM login WHERE username='%s' AND pass='%s' limit 1", $user, $pass);
if (count($result['result'])>0) {
$_SESSION['IdUser'] = $result['result'][0]['IdUser'];
print json_encode($result);
} else {
errorJson('Authorization failed');
}
}
function logout() {
$_SESSION = array();
session_destroy();
}
我试图在登录方法的开头添加会话_destroy();
,但没有成功
顺便说一下,我也可以将
IdUser
保存在NSUserDefaults
或iPhone钥匙链中,并在需要时将其发送到服务器。尝试这样的注销功能
function logout() {
session_start();
$_SESSION = array();
session_destroy();
}
尝试这样的注销功能 函数注销(){ }
我真的不明白你的问题。你确定会话能与你的应用程序和cookie一起工作吗?我肯定它能工作,我知道这有点奇怪。但可能是我遗漏了什么。顺便说一句,如果我在
applicationidentinterbackground
中调用login
并在app中调用login
ApplicationDidBecomeActive
它可以工作(当然,在我在后台关闭应用程序并再次打开它之后),但仅在这一次,当我重新打开应用程序时,它不工作。是否在PHP文件的第一行调用了会话_start()
(在输出任何内容之前)?您的SQL语句表明您正在使用明文保存密码。这不是真的,对吗?iPhone apo是否正在发送会话id为的cookie?session\u start()
在logout()时已被调用
被调用。它不会改变任何东西。我想问题是,当你调用函数时,session\u start()没有被调用,请尝试注销和登录函数中的session\u start()。我不是OP。你的猜测是错误的。不可能。你说我不是OPit's not me是什么意思OP==原始海报
session_start();
session_destroy();