我已经在codeigniter中开发了一个项目工作。网站上有一个登录页面。登录时,单击任何菜单项时,将重定向到登录页面。此外,在登录后重新加载主页时,它也会重定向到登录页面。
public function profile() {
$data = array();
if($this->session->userdata('loggedIn') !== FALSE && $this->session->userdata('logType') == 'stu') {
//echo 'okkkk!!!';die;
$data = $this->session->all_userdata();
$data['user_data'] = $this->data->getStuByIdDb($data['stu_id']);
log_message('info','data '.print_r($data,TRUE));
$this->load->view('stuProfileView',$data);
}
else{
//echo 'okkkk';die;
$this->load->view('stuLoginView');
}
}
上面显示了特定菜单配置文件的代码。单击它时会转到名为'Stu'的控制器,在该控制器中编写了一个名为profile()的函数,我在上面粘贴了该函数。我已经自动加载了会话库。但if语句会话无效。任何人都可以建议一个纠正这个问题的解决方案吗?
这是由于我的服务器版本问题吗?
的config.php
$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;
$config['sess_use_database'] = TRUE;
$config['sess_table_name'] = 'ci_sessions';
autoload.php
$autoload['libraries'] = array('database', 'session', 'encrypt');
控制器文件
public function authStu() {
$rsp = array();
$authStuData = array();
$authStuData = $this->input->post(NULL, TRUE);
log_message('info',print_r($authStuData,TRUE));
$rsp = $this->data->authStuDb($authStuData);
log_message('info','rsp '.print_r($rsp,TRUE));
if ($rsp['authStuStatus'] == TRUE){
$rsp['status'] = TRUE;
$rsp['msg'] = "Student Valid";
$rsp['statusID'] = 010;
$rsp['data'] = NULL;
$newdata = array(
'stu_id' => $rsp['stu_id'],
'logType' => 'stu',
'loggedIn' => TRUE
);
$this->session->set_userdata($newdata);
}elseif($rsp['authStuStatus'] == FALSE){
$rsp['status'] = FALSE;
$rsp['msg'] = "Sorry, this student doesn't exist";
$rsp['statusID'] = 000;
$rsp['data'] = NULL;
}
echo json_encode ($rsp);
}
在上面的代码中,使用数据设置loggedIn会话变量。这是控制器本身的功能。