问题是我将我的功能从一个控制器重定向到另一个控制器而且我不知道为什么它没有被重定向到那里但是当我使用重定向功能时直接进入登录page(RegistrationController)
但是当我加载视图然后它工作。
请考虑以下代码段。我希望它被重定向到AdminController
,但它没有被重定向到那里。我在AdminController
中有一个观点。
除此之外,该视图中的链接也不起作用,只要点击它们,它们也会加载RegisterationController
。
<?php
class RegistrationController extends CI_Controller{
function validate_credentials(){
$username = $this->input->post('hotelEmail');
$password = $this->input->post('hotelPassword');
$this->load->model('AdminModel');
$query = $this->AdminModel->validate($username, $password);
if($query) // If the user's credentials validated . . .
{
$data = array(
'hotel_email' => $this->input->post('hotelEmail'),
'hotel_id' => true
);
$this->session->set_userdata($data);
redirect('AdminController');
}else{
$this->session->set_flashdata('wrong_credentials', 'Wrong Username or Password!');
$this->load->view('login');
}
}
?>
视图控制器的类是从AuthenticationController扩展的,如下所示
<?php
class AuthenticationController extends CI_Controller{
public function __construct(){
parent::__construct();
$this->checkSession();
}
public function checkSession(){
if(!$this->session->set_userdata('hotel_id')){
redirect('RegistrationController/');
exit();
}
}
}
?>
答案 0 :(得分:1)
从 checkSession()功能中删除 set_userdata 中的设置_ ,您就可以了!
答案 1 :(得分:0)
首先在控制器中加载会话或autoload.php
public function __construct()
{
parent::__construct();
$this->load->library('session');
}
接下来,如果用户凭据正确,请致电validate_credentials
以创建会话。
接下来,调用此函数:
public function checksession()
{
print_r($this->session->userdata);
}
答案 2 :(得分:0)
您使用 set_userdata 代替 userdata
使用此代码
public function checkSession(){
if(!$this->session->userdata('hotel_id')){
redirect('RegistrationController/');
exit();
}
}