我正在使用 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');
}
}
在第三个控制器中,这是我遇到问题的地方,我无法访问存储用户名的变量,这里是代码:
class Blood_Controller extends CI_Controller {
public function __construct()
{
session_start();
parent::__construct();
if(!isset($_SESSION['username'])){
redirect(base_url().'index.php/login');
}
}
即使我在第一个控制器上输入正确的用户名,它也总是进入 if 语句。谁能帮忙?