如何在导航栏中显示我的名字和姓氏的值

时间:2019-04-17 09:24:31

标签: php codeigniter session session-variables

我正在使用代码点火器,并且想显示登录到导航中的用户的全名。

我尝试显示登录用户名的值以及密码。

然后,我还尝试根据我的数据库表用户添加数组项,例如名字和姓氏,这是行不通的。

下面是我在Controller上的登录功能代码

        public function login(){
            $data['title'] = 'Sign In';

            $this->form_validation->set_rules('user_email','email','required|valid_email');
            $this->form_validation->set_rules('user_password','password','required');

if($this->form_validation->run() === FALSE){
$this->load->view('templates/header');              
$this->load->view('login',$data);

} else {
    $email = $this->input->post('user_email');
$password = md5($this->input->post('user_password'));
//Login User
$user_id = $this->user_model->login($email,$password);
if($user_id){
//create sessions
$user_data = array(                     
                        'user_email' => $email,     
                        'user_name' => $user_id->user_name,
                        'user_roles' => $user_id->types,
                        'logged_in' => true
                    );
                    $this->session->set_userdata($user_data);

             $this->session->set_flashdata('user_loggedin','You are now Login');
             redirect(base_url() . 'site/dashboard');
                } else {
              //Set message
              $this->session->set_flashdata('failed_login','Login is Invalid');
              redirect(base_url() . 'site');
                }      
            }
        }

下面是我的user_model登录功能

      public function login($email,$password)
      {
        $this->db->where('user_email',$email);
        $this->db->where('user_password',$password); 

        $result = $this->db->get('users');
        if($result->num_rows() === 1){
            return $result->row(0)->id;
        } else {
            return false;
        }
    }
 <li class="nav-item dropdown no-arrow">
    <a class="nav-link dropdown-toggle" href="#" id="userDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
        <span class="mr-2 d-none d-lg-inline text-gray-600 small">Welcome, <?php echo $this->session->userdata('user_name'); ?></span>
        <!-- <img class="img-profile rounded-circle" src="https://source.unsplash.com/QAB-WJcbgJk/60x60"> -->
    </a>
</li>

我只成功显示了用户名和密码,没有显示登录的姓名或姓氏表

2 个答案:

答案 0 :(得分:1)

您没有正确地将数据保存到会话中

只需在模型函数中编写这部分代码。 我认为这可以解决您的问题。

 //model function
        $this->load->model('user_model');
        $user_data = $this->user_model->login_success($username, $password);
        if ($user_data) {
            $session_data = array(
                'username' => $username,
                'password' => $password,
                'first_name' => $user_data->first_name,  // This value from DB
                'last_name' => $user_data->last_name    // This value from DB
         );

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

这样编写模型代码:

  public function login($email,$password)
  {
    $this->db->where('user_email',$email);
    $this->db->where('user_password',$password); 

    $result = $this->db->get('users');
    if($result->num_rows() == 1){
        return $result->row() // it will fetch all the data from your db row
    } else {
        return false;
    }
}

您应将return $result->row(0)->id更改为return $result->row()我希望您现在将获得所需的输出。

答案 1 :(得分:0)

在您的login_success方法中,获取用户详细信息(例如名字和姓氏)并返回它们。

您可以使用代码中的会话分配名字和姓氏。

 $session_data = array(
            'username' => $username,
            'password' => $password,
            'first_name' => $firstname, // Assumed this value from DB
            'last_name' => $lastname // Assumed this value from DB
            );

在您的HTML中,您可以显示如下欢迎消息:

<span class="mr-2 d-none d-lg-inline text-gray-600 small">Welcome, <?php echo $this->session->userdata('first_name'); ?> &nbsp; <?php echo $this->session->userdata('last_name'); ?></span>