2017-07-24 118 views
1

我试图从数据库中获取用户详细信息并将其放入会话中,以便可以在视图中使用它。我尽我所能,但我不断收到错误。未定义的变量电子邮件。传递用户信息以在codeigniter中查看

MODEL

function login($username, $password) 
    { 
     $this->db->select('authTbl.id, authTbl.password, authTbl.username, authTbl.email, authTbl.mobile'); 
     $this->db->from('users as authTbl'); 
     $this->db->where('authTbl.username', $username); 
     $this->db->where('authTbl.isDeleted', 0); 
     $query = $this->db->get(); 

     $user = $query->result(); 

     if(!empty($user)){ 
      if(verifyHashedPassword($password, $user[0]->password)){ 
       return $user; 
      } else { 
       return array(); 
      } 
     } else { 
      return array(); 
     } 
    } 

控制器

function isLoggedIn() 
    { 
     $isLoggedIn = $this->session->userdata('isLoggedIn'); 
     $data['title'] = 'Login'; 
     if(!isset($isLoggedIn) || $isLoggedIn != TRUE) 
     { 
      $this->load->view('templates/header'); 
      $this->load->view('users/login', $data); 
      $this->load->view('templates/footer'); 
     } 
     else 
     { 
      redirect('posts'); 
     } 
    } 

    /** 
    * This function used to logged in user 
    */ 
    public function login() 
    { 
     $this->load->library('form_validation'); 
     $data['title'] = 'Login'; 
     $this->form_validation->set_rules('username', 'Username', 'required|max_length[128]|trim'); 
     //$this->form_validation->set_rules('password', 'Password', 'required|max_length[32]|'); 

     if($this->form_validation->run() === FALSE) 
     { 
      $this->load->view('templates/header'); 
      $this->load->view('users/login', $data); 
      $this->load->view('templates/footer'); 
     } 
     else 
     { 
      $username = $this->input->post('username'); 
      $password = $this->input->post('password'); 

      $result = $this->user_model->login($username, $password); 

      if(count($result) > 0) 
      { 
       foreach ($result as $res) 
       { 
        $sessionArray = array('id'=>$res->id,      
              'username'=>$res->username, 
              'email'=>$res->email, 
              'mobile'=>$res->mobile, 
              'isLoggedIn' => TRUE 
            ); 

        $this->session->set_userdata($sessionArray); 
        $this->session->set_flashdata('user_login', 'Welcome'); 
        redirect('posts'); 
       } 
      } 
      else 
      { 
       $this->session->set_flashdata('login_fail', 'Email or password mismatch'); 

       redirect('users/login'); 
      } 
     } 
    } 

VIEW

<?php echo $email; ?> 
+0

您没有通过'$ email'变量来查看'$ data' – Pritamkumar

+0

是的。使用会话 – King

+1

试试这个** $ this-> session-> userdata('email'); ** –

回答

2

利用这一点,因为它已经被传递到会话

<?php echo $this->session->userdata('email'); ?> 
2

您所创建的会话FO [R用户信息

尝试获取会话数据:

回声$这个 - >会话级>用户数据( '电子邮件');

或试图传递的数据视图$ DATA

0

如果您正在使用flashdata,那么你可以得到它使用下面的代码:

控制器

if (empty($this->session->userdata('UserID'))) { 
      $this->session->set_flashdata('flash_data', 'You don\'t have access!'); 
      $this->load->view("initialHeader"); 
      $this->load->view("login"); 
      redirect('Login'); 
     } 

查看

<?php if(!empty($this->session->flashdata('flash_data'))) { 
           ?> 
           <div class="alert alert-danger"> 
            <?php echo $this->session->flashdata('flash_data'); ?> 
           </div> 

          <?php } ?> 

如果您正在使用TMP数据会话,请参考下面的代码:

控制器

<?php 
if (!empty($data)) { 
      $this->session->set_userdata('permission_error_msg', $data); 
      $this->session->mark_as_temp('permission_error_msg', 10); // For 10 Seconds 
      $this->load->view('dashboard', array($title, $data)); 
     } ?> 

查看

<?php if ($this->session->tempdata('permission_error_msg')) { ?> 
    <b class="login_error_msg"><?php 
     if (!empty($this->session->tempdata('permission_error_msg'))) { 
      echo $this->session->tempdata('permission_error_msg'); 
     } 
     ?></b> 
<?php } ?> 

谢谢。

2

$电子邮件将无法工作,因为写$电子邮件是指普通的变量,但在你的情况,你必须这样写:在你看来

<?php echo $this->session->userdata('email'); ?>