我正在使用codeigniter,並且我有3個控制器,我使用會話來存儲第一個控制器的用戶名,我使用此從其他控制器確定是否有人登錄。無法使用會話變量
這裏是第一控制器的構造函數,在這個階層,我也用在這裏我提供一個價值$_SESSION['username']
的語句,以便其他控制器使用它:
class Login extends CI_Controller {
public function __construct()
{
session_start();
parent::__construct();
}
public function index()
{
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Username');
$this->form_validation->set_rules('password', 'Password', 'required|min_length[4]');
if ($this->form_validation->run() !== false) {
// then validation passed. Get from db
$this->load->model('Login_Model');
$res = $this->Login_Model->verify_user(
$this->input->post('userName'),
$this->input->post('password')
);
if ($res !== false) {
$tempuser = $this->input->post('username');
$_SESSION['username'] = $tempuser;
redirect(base_url());
}
}
$this->load->view('login_view');
}
這是第二控制器,在他的構造,我創建了一個條件語句,以確定是否有人登錄,我測試了這一點,它仍然可以:
class Pagination extends CI_Controller {
public function __construct() {
parent:: __construct();
$this->load->helper("url");
session_start();
if(!isset($_SESSION['username'])){
redirect(base_url().'index.php/login');
}
}
在第三控制器,這是我遇到的問題,我無法訪問其中i存儲的用戶名變量,這裏是代碼:
class Blood_Controller extends CI_Controller {
public function __construct()
{
session_start();
parent::__construct();
if(!isset($_SESSION['username'])){
redirect(base_url().'index.php/login');
}
}
它總是走在if語句內連如果我在第一個控制器上輸入右用戶名。 任何人都可以幫忙嗎?
你在哪裏寫'用戶名'的會話?當某個用戶使用正確的用戶名和密碼登錄時,第一個控制器上的 –
。 – egt1993
你應該粘貼該代碼以及 – Paddyd