将用户信息传递给codeigniter中的视图

时间:2017-07-24 12:10:00

标签: php codeigniter session login

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

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();
        }
    }

CONTROLLER

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');
            }
        }
    }

查看

<?php echo $email; ?>

3 个答案:

答案 0 :(得分:2)

您正在为用户信息创建会话

尝试获取会话数据:

  

echo $ this-&gt; session-&gt; userdata('email');

或尝试传递views $ data

中的数据

答案 1 :(得分:2)

$ email不起作用,因为写$ email意味着普通变量,但在你的情况下,你必须写如:

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

答案 2 :(得分: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 } ?>

谢谢。