将 PHP 中的会话与本机移动应用程序一起使用


Using sessions in PHP with native mobile app

我在服务器端使用 CodeIgniter 框架为本机移动应用程序提供后端。在服务器端,我必须使用购物车。我正在使用 db 进行 CodeIgniter 中的会话。当我们使用会话时,session_id浏览器的cookie中让会话工作。登录请求成功后,移动应用程序从服务器响应中检索会话 ID - 然后此session_id可以在进一步的请求中从移动应用程序发送到服务器。

现在CI

中有没有办法在sessionid的基础上获取会话数据?就像如果移动应用程序发送session_id"xyz",那么我如何获取session_id为"xyz"的会话的数据?以及如何在使用购物车时更好地处理会话?

以下是我的登录代码。会话存储在数据库ci_session表中。

function login($username,$password){
    $query = $this->db->select("id,username")->get_where(self::$table, array('username' => $username,'Password'=>$password));
    $arr=$query->row_array();
    if($arr){
        $this->session->set_userdata(array('id'=>$arr['id'],'username'=>$arr['username']));
        // $this->db->insert('ci_sessions',array('user_id'=>$arr['id'],'username'=>$arr['username']));
        return $this->session->userdata('session_id');
    }
    return 0;                    
}

那么我怎样才能获得会话 w.r.t. session_id 以及购物车如何使用它呢?因为我认为就像本文档中一样:购物车 http://codeigniter.com/user_guide/libraries/cart.html 会自动存储针对加载的会话的内容。因此,我需要根据session_id加载会话,以便我可以正确使用 CI 购物车库。

如何根据session_id加载会话,或告诉我我是否以错误的方式加载会话?

首先,问题的格式和写法非常糟糕,因此不太容易理解......

如果我理解正确,这就是你得到的:

  1. 在移动本机应用程序中,用户登录 - 对基于 CI 的服务器的请求
  2. CI 服务器登录用户,将数据保存到会话并将会话保存到数据库,同时使用会话 ID 响应移动应用程序
  3. 然后,每当将请求发送到服务器时(例如使用购物车时(,移动应用程序都会发送会话 ID

现在 - 如果你ci_session数据库表中存储了会话,你只需要根据提供的会话 ID 请求存储在数据库表中的会话内容,所以使用你的登录脚本示例我会做类似的事情:

function loadSessionBySessionId($sessionId){
    $query = $this->db->select("*")->get_where('ci_session', array('session_id' => $sessionId));
    return $query->row_array();              
}

扩展代码以满足您的编码约定和服务器端应用程序。在服务器端应用程序的其他地方,您处理来自移动应用程序的请求您将检查会话是否返回(如果没有,则应返回 FALSE 并采取进一步操作......

不知道您的购物车是如何工作的 - 这部分只在您身上(除非您向我们明确表示您希望我们帮助您使用购物车(。