2013-03-08 109 views
0

我想使用TideSDK在我的桌面应用程序中创建一个登录系统。 我试图使用PHP会话,但是当我运行应用程序并单击某个链接到另一个页面时,我设置的会话消失。但是,如果我在Web浏览器上运行,它可以正常工作。TideSDK桌面:如何使用PHP会话创建登录系统?

我试图搜索,但我找不到涉及我的问题的一些问题。

我想知道如何处理TideSDK桌面中的PHP会话还是有其他选择来创建身份验证系统?

谢谢你的帮助。

回答

1

不是100%确定你要做什么,但要坚持一些信息,比如会话,最好使用SQLite数据库的Ti.Properties或localStore。

+0

感谢您发布您的最终解决方案。不仅可以说很多问题,而且帮助我很多。 – Chris 2014-01-08 08:27:26

0

我解决了这个问题的方法是这样的:

在PHP端:

public function login($email_address, $password) { 
    $email_address = filter_var($email_address, FILTER_VALIDATE_EMAIL); 
    $password = filter_var($password, FILTER_SANITIZE_STRING); 

    if (is_valid_login($email_address, $password)) { 
     return json_encode(array('status' => 'Logged in', 'session_id' => session_id())); 
    } 
    return json_encode(array('status' => 'Failed login')); 
} 

在TideSDK侧:

$.ajax({ 
    type: "POST", 
    url: login_url, 
    data: { 
     'email_address' : email_address, 
     'password'  : password 
    }, 
    success: function(data, status, xhr) { 
     if (data.status == 'Logged in') { 
      Ti.App.Properties.setString('loggedIn', 'true'); 
      Ti.App.Properties.setString('sessionId', data.session_id); 
     } else { 
      Ti.App.Properties.setString('loggedIn', 'false'); 
     } 
    } 
}); 

然后,每个连接返回到服务器像这样初始化:

var httpClient = Ti.Network.createHTTPClient(); 
httpClient.setCookie('PHPSESSID', Ti.App.Properties.getString('sessionId')); 

然后它的工作。