我正在創建一個登錄檢查功能。但是我的兩個閃存數據信息設置不正確。Codeigniter 3登錄檢查功能不顯示正確的Flashdata消息
- 如果用戶已登錄,然後,如果會話過期,應該設置這個 閃存數據消息您的會話令牌已經過期!
- 如果用戶沒有登錄,並試圖用出來 記錄訪問控制器,那麼就應該設置此flashdata消息您需要登錄到 訪問這個網站!
由於某些原因,它總是顯示第二個flashdata消息。
問題:我該如何正確使用這兩個flashdata消息?
控制器:的login.php 功能:檢查
public function check() {
$uri_route = basename($this->router->directory) .'/'. $this->router->fetch_class();
$route = isset($uri_route) ? $uri_route : '';
$ignore = array(
'common/login',
'common/forgotten',
'common/reset'
);
if (!in_array($route, $ignore)) {
// $this->user->is_logged() returns the user id
if ($this->user->is_logged()) {
// $this->session->userdata('is_logged') returns true or false
if (!$this->session->userdata('is_logged')) {
// Redirects if the user is logged on and session has expired!
$this->session->set_flashdata('warning', 'Your session token has expired!');
redirect('admin/common/login');
}
} else {
$this->session->set_flashdata('warning', 'You need to login to access this site!');
redirect('admin/common/login');
}
}
我笨通過鉤子運行功能這樣我就不必增加它的每一個控制器上。
$hook['pre_controller'] = array(
'class' => 'Login',
'function' => 'check',
'filename' => 'Login.php',
'filepath' => 'modules/admin/controllers/common'
);
請注意'$ uri_route'將因爲連接斜槓而被設置爲每個請求。其次,在您的描述之後,您似乎沒有登錄。因爲這是您在其他條件下獲得的。現在,您需要檢查和/或張貼代碼何時使用此方法獲得更多。 – Tpojka