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

How to display value of my first name and last name into navigation bar

我正在使用 code igniter,我想显示在我的导航中登录的用户的全名。

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

然后我也尝试根据我的数据库 table 用户添加数组项,例如名字和姓氏,但它不起作用。

下面是我在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>

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

在您的 login_success 方法中,获取用户详细信息,例如名字和姓氏以及 return 他们。

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

 $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>

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

只需在您的模型函数中编写这部分代码即可。 我想这会解决你的问题。

 //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()我希望现在你会得到你想要的输出。