【发布时间】:2013-02-08 02:26:18
【问题描述】:
当用户的所有凭据都得到验证时,我正在尝试在控制器的 codeigniter 中设置一个会话。我的登录控制器方法中有此代码。方法 'login_check' 由 form_validation 的 set rules 方法作为回调函数调用。我尝试了所有可能的方法,但由于某种原因,我无法设置会话,根据 CI 的手册,这应该是一项直接的任务
注意:会话在 autoload.php 中自动加载
$this->form_validation->set_rules('password', 'password', 'trim|required|callback_login_check');
public function login_check($password) {
$this->load->library('session');
//Field validation succeeded. Validate against database
$username = $this->input->post('username');
$this->load->model('industry_person');
//query the database
$query = $this->industry_person->check_login($username, $password);
if (!$query) {
$this->form_validation->set_message('login_check', 'Invalid username or password');
return false;
$this->index();
} else {
$data = array(
'username' => $username,
'is_logged_in' => true
);
if (!$this->session->set_userdata('logged_in', $data))
echo "error setting session";
}
}
当我输入正确的凭据并且它们在数据库中匹配时,我会收到输出为“error setting session”。
【问题讨论】:
-
你设置了一个加密密钥,对吧?
-
if (!$this->session->set_userdata('logged_in', '$data'))$data 有引号 - 而且不应该 - 它是一个保存数组的变量。 set_userdata 也只接受数组,而不是你传递的字符串“logged_in”。 -
是的,我已经设置了加密密钥
标签: php mysql codeigniter session