【发布时间】:2018-03-05 08:10:19
【问题描述】:
我对我的代码中的会话(用户数据/闪存数据)有疑问。
模态
public function loginCheck(){
$email = $this->input->post('email');
//encrypt password
$this->load->library("hashing");
$password = $this->hashing->incrypt($this->input->post('password'));
$this->params = array('email' => $email, 'password' => $password);
$user = $this->findById();
if(count($user)>0){
$data = array(
'email' => $user->email,
'isLoggedIn' => 1,
'user_id' => $user->id,
'user_type' => $user->user_type
);
$this->session->set_userdata($data);
return true;
}
return false;
}
还有我的控制器
public function login(){
$this->load->model('model_users');
//if posted login
$submit = $this->input->post('submit');
if($submit){
$this->load->model('model_users');
$rules = $this->model_users->rules;
$this->form_validation->set_rules($rules);
if($this->form_validation->run() == true){
// user credential from model
if($this->model_users->loginCheck()== true){
redirect("admin/site/index");
} else{
$this->session->set_flashdata('message', 'Oops! Invalid email and/ or password.');
redirect("admin/site/login");
}
}else{
$this->session->set_flashdata('message', 'Oops! Invalid email and/ or password.');
redirect("admin/site/login");
}
}
$this->loadPartialView("admin/login");
}
会话未在 CI 3.0 上设置。 set_userdata() 函数运行不正常。
手动会话初始化也有问题。
【问题讨论】:
-
会话库是从自动加载中加载的
-
解释深入到底发生了什么以及您采取了哪些调试步骤。这将帮助我们缩小问题的范围。 “运行不佳”和“遇到麻烦”并不是真正可以解决的确定性问题。
-
谢谢,我正在使用 set_userdata 函数为我的系统设置会话。但是,它不保存会话。我需要在其他地方管理吗?
-
只要你已经自动加载它 - 应该没问题。确保是这种情况。为了安全起见,可以将其加载到您的控制器/模型构造函数中(您可以稍后将其删除),以查看这是否可能是问题所在。您需要验证内部是否达到了
if(count($user)>0){。里面加个回声什么的看看。尝试一堆类似的调试东西。 -
当一切都失败了。创建一个测试控制器,设置一个会话变量并在 echo 之后。重新加载页面,如果不存在,则说明您遇到了会话问题。检查以确保配置中的 sess_save 路径正确...(必须设置)
标签: php codeigniter