我有一个与数据库通信的iPhone应用程序,其中包括用户数据(即用户名,电子邮件,密码)等内容,我为此创建了一个PHP API,并在iPhone应用程序中连接到该API。我的问题是:我将用户ID保存在$_SESSION
以便以后在需要时恢复,当我手动登录时,$_SESSION
变量很容易保存,我可以随时调用它们,但是当我需要时应用程序自动登录(显然是在第一次登录后,用户名和密码存储在iPhone钥匙串中),$_SESSION
变量没有保存,我注意到它们只是存储和调用后没有问题我注销哪些转换为session_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();
}
我尝试在登录方法的开头添加session_destroy();
,但它不起作用。
顺便说一下,我可以在IdUser
或iPhone钥匙串中保存NSUserDefaults
,并在需要时将其发送到服务器。 Is it safe/not wrong to do such things on the app side rather than the server side?
答案 0 :(得分:0)
尝试这样的退出功能......
function logout() {
session_start();
$_SESSION = array();
session_destroy();
}
答案 1 :(得分:0)
尝试像这样的退出功能
function logout(){
session_start();
session_destroy();
}
当您调用logout函数时,它不会调用session_start(),因此您无法获取会话变量。您应该在编辑之前获取它。