如何在我的登录功能模型中的会话中设置userdata

时间:2012-10-03 02:07:15

标签: php codeigniter

当用户登录时,他们会被定向到我的log in函数 - 这是我的部分工作代码。我评论了需要帮助的部分。

模型

    if ($query->num_rows() == 1)
    { 
        return $query->row()->f_name;
    }   

    else {
        return false;
    }

}

控制器

    if($this->form_validation->run()) {
    $f_name = $this->model_users->can_log_in();
        $data = array(
            'email' => $this->input->post('email'),
            'is_logged_in' => 1,
            'name' => $f_name
            );

        $this->session->set_userdata($data);

        redirect('account_dashboard');  

用户的名字在他们的电子邮件/ pw的数据库表中。我想让用户f_name在登录时将其设置在会话中,因为会话是全局变量。

视图

我的标题显示了他们的名字:

echo $this->session->userdata('name'); 

如何从表中获取db_values并将它们传递给会话?

1 个答案:

答案 0 :(得分:0)

当您致电$query->row()时,它会将查询结果中的第一行作为对象返回。因此,如果您需要返回用户的名字,在这种情况下存储在f_name字段下,您需要写下这个:

return $query->row()->f_name;

然后在你的控制器中,你将从模型函数返回第一个名字。

$f_name = $this->model_name->model_function_name();
$data = array('email' => $this->input->post('email'),
              'is_logged_in' => 1,
              'name' => $f_name
);

如果您需要的不仅仅是控制器中用户的名字,请改为从模型函数返回整行。

return $query->row();

然后在您的控制器中,您可以通过访问其属性来访问返回的对象(或数组,如果您使用row_array()),该属性将根据数据库表中的字段名称进行命名。

$user = $this->model_name->model_function_name();
$f_name = $user->f_name; // Get the user's first name
$other = $user->other; // Get some other information

row_array()的工作方式也相同,但当然,您需要执行类似$user['f_name']而不是$user->f_name的操作。

编辑:此外,在尝试调用其功能之前,请确保控制器已加载模型。

$this->load->model('model_name');