在PHP中使用本机移动应用程序中的会话

时间:2012-05-16 12:22:42

标签: codeigniter mobile-application php

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

现在CI有一种方法可以在sessionid的基础上获取会话数据吗?就像移动应用程序发送session_id'xyz'一样,如何获取session_id为'xyz'的会话数据?如何在使用购物车的同时使用会话更好?

以下是我的登录代码。会话存储在db的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加载会话,以便我可以正确使用CIs购物车库。

如何基于session_id加载会话,或者告诉我我是否以不好的方式进行会话?

1 个答案:

答案 0 :(得分:2)

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

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

    移动本机应用用户登录中的
  1. - 对基于CI的服务器的请求
  2. CI服务器将用户登录,将数据保存到会话并在响应具有会话ID的移动应用程序时将会话保存到数据库
  3. 移动应用随后会在向服务器发送请求时发送会话ID(如使用购物车时)
  4. 现在 - 如果您将会话存储在数据库表ci_session中,您只需要根据提供的会话ID请求存储在数据库表中的会话内容,因此使用您的登录脚本示例我会这样做类似的:

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

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

    不知道你的购物车是如何工作的 - 这一部分就在你身上(除非你向我们说明你希望我们用你的购物车帮助你)。