2016-03-01 69 views
1

嗨,我有一个用户可以有多个site_keyCodeigniter会话数据库

现在当用户登录时,我从数据库中获取一个密钥并设置会话变量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); 
} 

现在我的应用程序的视图取决于会话变量。所以我选择的数据显示为按会话中设置的网站密钥。

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

我想要做这样的事情

一旦用户登录,从数据库会话设置关键点。

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

我该怎么办?

+0

此行'isset代码($ _ POST [“网站列表”])'是创造问题,不是每个页面的用户访问并岗位,因此其去别的部分 – Rajesh

+0

@Rajesh我一直使用的是可靠的,但并没有太大的差别 – Rajan

+0

我已经更新了我以前的评论,PLZ检查。每个页面访问都发布数据还是什么? – Rajesh

回答

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); 
     } 
    } 
+0

这可以解决问题,但每次刷新页面时,都会在数据库中设置else部分网站 – Rajan