2016-03-01 70 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