我想寫一個函數來殺死我的用戶會話,如果他們在數據庫中的狀態(對於公司或用戶)更改爲false(此工作正常)。codeigniter殺會話,但在重定向時使用flashdata
不幸的是,codeigniter在殺死會話後不會輕易讓set_flashdata。我無法解決如何重新初始化新會話,以便將重定向的flash數據存儲到登錄頁面(並告訴用戶它們爲什麼被引導出來)。
在這裏搜索和谷歌沒有真正提供任何關於重新創建會話使用。我用笨3.0.3
助手代碼:
function user_active($username)
{
$CI =& get_instance();
$CI->load->database();
$CI->db->where('username', $username);
$CI->db->from('users');
$CI->db->join('company', 'company.orgID = users.orgID');
$query = $CI->db->get();
$result = $query->row_array();
// check company active
if($result['orgStatus'] != TRUE){
$CI->session->sess_destroy();
$CI->session->set_flashdata('flashError', 'Company currently disabled please contact accounts for reactivation');
redirect(site_url(), 'refresh');
}
// check user active
if($result['status'] != TRUE) {
$CI->session->sess_destroy();
$CI->session->set_flashdata('flashError', 'User not active, please contact your administrator');
redirect(site_url(), 'refresh');
}
}
您必須通過數據庫驗證每個請求。意思是在每個請求上都做這件事。 –
這與我的問題無關? –
對我而言,沒有。對於這種事情,我所做的是創建一個擴展CI_Controller的主控制器。然後每個控制器都必須擴展您創建的主控制器。在主控制器的構造函數中,調用你的當前函數。對我而言,這是我做過的最好的方式。 –