我在服务器端使用 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加载会话,或告诉我我是否以错误的方式加载会话?
首先,问题的格式和写法非常糟糕,因此不太容易理解......
如果我理解正确,这就是你得到的:
- 在移动本机应用程序中,用户登录 - 对基于 CI 的服务器的请求
- CI 服务器登录用户,将数据保存到会话并将会话保存到数据库,同时使用会话 ID 响应移动应用程序
- 然后,每当将请求发送到服务器时(例如使用购物车时(,移动应用程序都会发送会话 ID
现在 - 如果你ci_session
数据库表中存储了会话,你只需要根据提供的会话 ID 请求存储在数据库表中的会话内容,所以使用你的登录脚本示例我会做类似的事情:
function loadSessionBySessionId($sessionId){
$query = $this->db->select("*")->get_where('ci_session', array('session_id' => $sessionId));
return $query->row_array();
}
扩展代码以满足您的编码约定和服务器端应用程序。在服务器端应用程序的其他地方,您处理来自移动应用程序的请求您将检查会话是否返回(如果没有,则应返回 FALSE 并采取进一步操作......
不知道您的购物车是如何工作的 - 这部分只在您身上(除非您向我们明确表示您希望我们帮助您使用购物车(。