Php $\u会话变量不';自动登录时无法保存

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变量没有被保存,我注意到它们只在我注销后被存储和调用,没有任何问题

我有一个与数据库通信的iPhone应用程序,其中包括用户数据(即用户名、电子邮件、密码),我为此创建了一个PHP API,并在iPhone应用程序中连接到该API。我这里的问题是:我将用户id保存在
$\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();
}

尝试这样的注销功能

函数注销(){

}

  • 当您调用注销函数时,它不会调用session_start(),因此您无法获取会话变量。您应该在编辑它之前获取它

  • 详情:


  • 我真的不明白你的问题。你确定会话能与你的应用程序和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();