【问题标题】:How to display value of my first name and last name into navigation bar如何在导航栏中显示我的名字和姓氏的值
【发布时间】:2019-04-17 09:24:30
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 您需要在会话中设置名称和姓氏值才能在您的视图中使用它
  • 这是因为,您从表单提交中获得了用户名和密码,但对于其他信息,如 first_name、last_name ,您应该首先从数据库中获取它们并设置为变量,以便在会话中设置这些值。

标签: php codeigniter session session-variables


【解决方案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-&gt;row(0)-&gt;id 更改为return $result-&gt;row()我希望现在你会得到你想要的输出。

【讨论】:

  • 嗨,@Tahmind 先生,我已按照您的指示进行操作,请参阅下面的代码 public function login(){ $data['title'] = 'Sign In'; $this-&gt;form_validation-&gt;set_rules('user_email','email','required|valid_email'); $this-&gt;form_validation-&gt;set_rules('user_password','password','required'); if($this-&gt;form_validation-&gt;run() === FALSE){ $this-&gt;load-&gt;view('templates/header'); $this-&gt;load-&gt;view('login',$data); } else { $email = $this-&gt;input-&gt;post('user_email'); $password = md5($this-&gt;input-&gt;post('user_password')); $user_id = $this-&gt;user_model-&gt;login($email,$password); 继续
  • ``$user_id = $this->user_model->login($email,$password); if($user_id){ //创建会话 $user_data = array( 'user_email' => $email, 'user_password' => $password, 'user_name' => $user_id->user_name, 'logged_in' => true ); $this->session->set_userdata($user_data);`
  • 它不起作用,请耐心等待我刚刚开始学习编码:(
  • 用你的model code编辑你的问题,这样就很容易理解了。
  • 先生,问题现已编辑,包括我的模型代码,非常感谢您
【解决方案2】:

在您的 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>

【讨论】:

  • 您好 Sonyv,我之前尝试过,但没有任何价值。
  • 当我添加名字和姓氏时,我总是收到无效的用户名和密码错误:(
  • @RCX,你能从 login_success 方法粘贴你的代码吗
  • 这是我在模型中的 login_success 方法 db->where('username',$username); $this->db->where('password',$password); $query = $this->db->get('users'); if($query->num_rows() > 0){ return true; } 否则 { 返回假; } }
  • 嗨@sony 感谢您提供此信息,稍后我将尝试有关如何从数据库中获取数据的信息,我是此编程的新手 致以最诚挚的问候,
猜你喜欢
  • 1970-01-01
  • 2016-04-28
  • 1970-01-01
  • 1970-01-01
  • 2016-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多