首先,對不起我的英語:DSession empty codeigniter
我試圖做一個簡單的登錄Codeigniter沒有成功。我閱讀官方文檔並將腳本降至最低限度。每次我重定向o刷新我的頁面或如果我轉到另一個控制器時,我的會話都是空的。如果我只創建一個控制器並進行簡單的讀寫操作,直到我刷新或重定向。
這就是我想要做的: 1)第一個控制器是主控制器。使用登錄表單加載視圖。此表單對方法validation_form和username_check回調有一個操作。 2)如果用戶能夠登錄,我設置我的用戶數據和重定向到限制控制器,這是我的禁區。
P.S.我在自動加載中使用庫會話並激活選項數據庫。我也有自動加載的數據庫庫。
主控制器
class Main extends CI_Controller {
public function __construct(){
parent::__construct();
}
public function index()
{
$this->load->view('login_view');
}
public function validation_form()
{
$this->load->library('form_validation');
$this->form_validation->set_rules('email', 'Email', 'required|callback_username_check');
if ($this->form_validation->run() == FALSE){
echo 'validation_error';
}else{
redirect('/restricted');
}
}
public function username_check(){
$this->load->model('login_model');
$email=$this->input->post('email');
$login=$this->login_model->validate($email);
if ($login != FALSE){
return true;
}
return false;
}
}
LOGIN MODEL
class Login_model extends CI_Model{
public function __construct(){
parent::__construct();
}
public function validate($email){
// Prep the query
$this->db->where('EmailDatore', $email);
// Run the query
$query = $this->db->get('Datore');
// Let's check if there are any results
if($query->num_rows() == 1)
{
// If there is a user, then create session data
$row = $query->row();
$data = array(
'email' => $row->EmailDatore,
'nome' => $row->Nome,
'cognome' => $row->Cognome,
'validated' => true
);
$this->session->set_userdata($data);
return true;
}
// If the previous process did not validate
// then return false.
return false;
}
}
受限CONTROLLER 類限制性延伸是CI_Controller {
public function __construct(){
parent::__construct();
$this->check_isvalidated();
}
public function index(){
// If the user is validated, then this function will run
echo 'Congratulations, you are logged in.';
}
private function check_isvalidated(){
if(! $this->session->userdata('validated')){
redirect('main');
}
}
}
你在哪裏調用你的控制器函數username_check? –
$ this-> form_validation-> set_rules('email','Email','required | callback_username_check'); –
JUST REMOVED session_start()from main controller的構造。這是一個測試:D –