Codeigniter会话数据库

时间:2016-03-01 12:27:56

标签: php codeigniter session

您好我有一个可以有多个site_key的用户。

现在当用户登录时,我从数据库中获取单个密钥并设置会话变量site

然后我有一个下拉菜单,我向他展示了他的site_keys。当他从下拉列表中选择一个密钥并提交该密钥时,会话变量将使用他在POST中给出的密钥进行更新。

我使用此代码:

if(isset($_POST['site-list']))
{
    $this->session->unset_userdata('site'); 
    $site_key =$_POST['site-list'];  
    $this->session->set_userdata('site', $site_key);
}
else
{
    $id = $this->session->userdata('id');
    $this->db->select('*');
    $this->db->where('tenant_id',$id);
    $this->db->from('sites');
    $query = $this->db->get();
    $result = $query->row(); 
    $site= $result->site_key;
    $this->session->set_userdata('site', $site);
}

现在我的应用程序视图取决于该会话变量。因此,我根据会话中设置的站点密钥选择要显示的数据。

当我导航到其他页面时,我的逻辑失败了。每次 else 都会被执行。

我想做类似的事情

用户在数据库中登录密钥后,将在会话中设置。

现在,当他从下拉列表中选择一个键时,只有我想要更新会话。

我该怎么办?

1 个答案:

答案 0 :(得分:1)

检查以下代码

       if (isset($_POST['site-list'])) {
        $this->session->unset_userdata('site');
        $site_key = $_POST['site-list'];
        $this->session->set_userdata('site', $site_key);
    } else {
        if ($this->session->userdata('site') != '') {
            $id = $this->session->userdata('id');
            $this->db->select('*');
            $this->db->where('tenant_id', $id);
            $this->db->from('sites');
            $query = $this->db->get();
            $result = $query->row();
            $site = $result->site_key;
            $this->session->set_userdata('site', $site);
        }
    }