簡體   English   中英

CodeIgniter:將更多信息存儲到會話中

[英]CodeIgniter: store more information into the session

這是我在登錄控制器中擁有的功能,該功能將數據存儲到數組中,然后設置userdata

  function validate_credentials()
   {
   $this->load->model('membership_model');
   $query = $this->membership_model->validate();

   if($query):
    $data = array(
     'username' => $this->input->post('username'),
     //add usertype
     //add email
     //add deposit money
     'is_logged_in' => true
    );
    $this->session->set_userdata($data);
    //should redirect to last view
    redirect('home/index');
   else:
    $this->index();
   endif;
  }// end of validate_credentials()

我想存儲更多信息,例如用戶類型,電子郵件,depost等,這些數據存儲在數據庫中。 如何從模型獲取數據到控制器? 還是不建議這樣做?

例如,對於用戶類型,我想在視圖中檢查用戶是否是管理員,並僅顯示管理員的某些選項。

您可以使用在CI中完成的常規CI會話處理。

$this->session->set_userdata('usertype', 'admin');

用於檢查用戶類型。 我通常有一個身份驗證類,用於檢查登錄用戶是否為管理員。 例如

function logged_in($role = NULL)
{
    if ( ! $this->CI->session->userdata('logged_in'))
    {
        return FALSE;
    }

    if ($this->CI->user->has_role($role, $this->CI->session->userdata('user_id')))
    {
        return TRUE;
    }
    return FALSE;
} // function restrict()

關於使用會話保存信息,這可能不是最安全的。 我通常建議即時檢查用戶信息,而不是將所有內容存儲在CI會話中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM