0

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

现在CI中有没有办法根据sessionid获取session的数据?就像移动应用程序发送 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;                    
}

那么我怎样才能得到会话 wrt session_id 以及购物车如何使用它呢?因为我认为在本文档中:http ://codeigniter.com/user_guide/libraries/cart.html购物车会根据加载的会话自动存储内容。因此我需要根据 session_id 加载会话,这样我才能正确使用 CIs 购物车库。

如何根据 session_id 加载会话,或者告诉我我是否做得不好?

4

1 回答 1

2

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

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

  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)并采取进一步的措施......

不知道您的购物车是如何工作的 - 这部分由您自己负责(除非您向我们明确说明您希望我们在您的购物车上为您提供什么帮助)。

于 2012-05-16T13:55:02.693 回答