[英]codeigniter not retrieving session in another controller
我完全被困在這里,我創建了一個控制器登錄,它獲得了,使用DB設置規則和認證,並在代碼結束時設置了會話。 此外,我還有另一個顯示儀表板的控制器儀表板,還必須使用會話來查看是否設置了會話,如果真用戶可以使用控制器,則重定向到登錄頁面。 就是這樣但我無法在儀表板中獲取會話,我該怎么辦?
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Login extends CI_Controller
{
/**
* Login constructor.
*/
public function __construct()
{
parent::__construct();
//Load Form helper
$this->load->helper('form');
//Load form validation library
$this->load->library('form_validation');
}
/**
*Display Login page
*/
public function index()
{
$title['title'] = 'Admin login';
$this->load->view('login', $title);
}
/**
*
* Set rules for authentication
*
* @return bool
*/
public function rules()
{
$rules = array(
array(
'field' => 'username',
'label' => 'Username',
'rules' => 'trim|required|xss_clean'
),
array(
'field' => 'password',
'label' => 'Password',
'rules' => 'trim|required|xss_clean'
),
array(
'field' => 'remember',
'label' => 'Remember',
'rules' => 'trim|int|xss_clean'
)
);
$this->form_validation->set_rules($rules);
if ($this->form_validation->run() != FALSE) {
$this->authentication();
} else {
$title['title'] = 'Admin login';
$this->load->view('login', $title);
}
}
/**
* Check if user is exist
*/
public function authentication()
{
$data = array(
'username' => $this->input->post('username', true),
'password' => $this->input->post('password', true)
);
$this->load->model('userData');
if ($this->userData->getUserData($data) == FALSE) {
$title['title'] = 'Admin login';
$this->load->view('login', $title);
} else {
$this->set_session($data);
redirect('dashboard/index');
}
}
/**
* @param $data username|password
*/
public function set_session($data)
{
$session_data = array(
'username' => $data['username'],
'login' => true
);
$this->session->set_userdata('auth', $session_data);
}
}
這是儀表板:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Dashboard extends CI_Controller{
public function __construct()
{
parent::__construct();
}
/**
* Display dashboard
*/
public function index(){
$array = $this->session->userdata('auth');
$login = $array['login'];
if ($login == true) {
$title['title'] = 'Dashboard';
$this->template->load('panel/dashboard', $title);
}else{
redirect('login/index');
}
}
}
你做錯了。 您無法在函數外部訪問$_post
值。 你也不需要authentication()
函數。
當你調用這個函數if ($this->form_validation->run() != FALSE)
並且如果它的PASS,那么在這里添加``authentication()`函數代碼。 然后你可以設置會話。
代碼示例
$this->form_validation->set_rules($rules);
if ($this->form_validation->run() != FALSE) {
$data = array(
'username' => $this->input->post('username', true),
'password' => $this->input->post('password', true)
);
$this->load->model('userData');
if ($this->userData->getUserData($data) == FALSE) { # Uncler this point
$title['title'] = 'Admin login';
$this->load->view('login', $title);
} else {
$this->set_session($data);
redirect('dashboard/index');
}
} else {
$title['title'] = 'Admin login';
$this->load->view('login', $title);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.