在Codeigniter中显示登录用户的配置文件信息?

时间:2017-12-03 21:29:26

标签: php codeigniter session

我想为当前登录的用户创建一个配置文件视图。我创建了一个session_data数组,用于登录时只包含其用户名。如何根据登录的人从行中检索其他值?我是否必须将所有信息添加到session_data数组中?

我的值为 first_name last_name ,& date_joined 我希望与 用户名 一起显示。

登录控制器:

EF.Property(entity, propertyName

用户视图

class Login extends CI_Controller
{
public function __construct()
{
    parent::__construct();
}

public function index()
{
  $this->load->view('templates/header');
  $this->load->view('login');
  $this->load->view('templates/footer');
}

function login_validation()
{
  $this->form_validation->set_rules('username', 'Username', 'required');
  $this->form_validation->set_rules('password', 'Password', 'required');
  if($this->form_validation->run())
  {
    $username = $this->input->post('username');
    $password = $this->input->post('password');
    $this->load->model('login_model');
    if ($this->login_model->can_login($username, $password))
    {
      $session_data = array(
        'username' => $username
      );
      $this->session->set_userdata($session_data);
      redirect('home');
    }
    else {
      $this->session->set_flashdata('error', 'Invalid Username and Password');
      redirect('login');
    }
  }
  else {
    $this->index();
  }
}

function enter()
{
  if ($this->session->userdata('username') != '') {
    echo "Welcome " . $this->session->userdata('username');
    echo '<a href="/index.php/logout">Logout</a>';
  }
  else {
    redirect('login');
  }
}

function logout()
{
  $this->session->unset_userdata('username');
  redirect('login');
}
}

1 个答案:

答案 0 :(得分:0)

您需要在login_model中使用一种方法,该方法会根据您发送给它的用户名检索用户名信息。

这样的事情:

function get_user($username)
{
    $this->db->select(*);
    $this->db->from('users');
    $this->db->where('username', $username);

    $query = $this->db->get();

    if ($this->db->affected_rows())
    {
        return $query->row();
    }
}

另一方面,我建议您使用现有的身份验证库。 Ion Auth非常好。

祝你好运!