我想做的是在验证CI用户时,在设置他们的会话数据时,从数据库中设置的字段中提取一些数据。
目前,我已经掌握了这一点;
function validate()
{
$query = $this->model_auth->validate();
if ($query) // if the user's credentials validated
{
$data = array(
'username' => $this->input->post('username'),
'is_logged_in' => TRUE
);
$this->session->set_userdata($data);
redirect('dashboard/');
} else {
$data['error'] = 'Invalid User Id and Password combination';
$this->load->view('view_login',$data);
}
}
这是我的型号
function validate() {
$this->db->where('username', $this->input->post('username'));
$this->db->where('password', md5($this->input->post('password')));
$query = $this->db->get('users');
if($query->num_rows == 1) { return TRUE; }
}//validate
我想做的是设置这样的东西;
$data = array(
'username' => $this->input->post('username'),
'user_level' => $ThisIsSomethingWithinTheDB,
'is_logged_in' => TRUE
);
在我的控制器中,$ThisIsSomethingWithinTheDB与数据库中user_level列下的相关条目相关。
我目前仍在学习,所以如果有任何帮助,我们将不胜感激。
如果您想将某个值设置为等于数据库中的某个值,则必须首先检索它。
我不太熟悉CI的ActiveRecord,因为我更喜欢使用Laravel和Eloquent,但从我看文档的情况来看:
$this->db->get('users')
相当于:
SELECT * FROM users
如果是这样的话,你应该能够设置:
$data['user_level'] = $ThisIsSomethingWithinTheDB
或
$this->session->set_userdata('user_level') = $ThisIsSomethingWithinTheDB
修改validate()函数,返回DB结果。
function validate()
{
$this->db->where('username', $this->input->post('username'));
$this->db->where('password', $this->input->post('password'));
$query = $this->db->get('users');
if ( $query->num_rows() > 0 )
{
$result = $query->result();
return $result[0];
}
else
{
return false;
}
}
现在,您可以访问数据库结果,就像在控制器中这样。。。
if ($query)
{
$data = array(
'username' => $this->input->post('username'),
'user_level' => $query->user_level, // This is "user_level" row from your DB
'is_logged_in' => true
);
}
希望这能有所帮助。
感谢您的帮助,
我做到了以下几点;
模型
function validate() {
$this->db->where('username', $this->input->post('username'));
$this->db->where('password', md5($this->input->post('password')));
$query = $this->db->get('users');
if($query->num_rows == 1)
{
return $query;
}
else
{
return FALSE;
}
}
控制器
function validate()
{
$query = $this->model_auth->validate();
if ($query) // if the user's credentials validated
{
$user_data = $query->row();
$data = array(
'username' => $this->input->post('username'),
'user_level' => $user_data->user_level,
'is_logged_in' => TRUE
);
$this->session->set_userdata($data);
redirect('dashboard/');
} else {
$data['error'] = 'Invalid User Id and Password combination';
$this->load->view('view_login',$data);
}
}
再次感谢您的帮助!