Php Codeigniter会话数据还是数据库查询?

Php Codeigniter会话数据还是数据库查询?,php,codeigniter,session,login,codeigniter-3,Php,Codeigniter,Session,Login,Codeigniter 3,如何在标题上显示客户或用户的信息,如姓名 首先,我有一个登录页面。客户和用户可以在同一登录页面上登录到仪表板。在登录过程中,它使用了2个数据库表,如User和Customer。当客户和用户登录到仪表板时,登录过程系统从2个数据库表获取数据 登录模式: private $table = "user, customer"; private $_data = array(); public function validate() { $username = $

如何在标题上显示客户或用户的信息,如姓名

首先,我有一个登录页面。客户和用户可以在同一登录页面上登录到仪表板。在登录过程中,它使用了2个数据库表,如User和Customer。当客户和用户登录到仪表板时,登录过程系统从2个数据库表获取数据

登录模式:

private $table = "user, customer";
    private $_data = array();

    public function validate()
    {
        $username = $this->input->post('username');
        $password = $this->input->post('password');

        // Username or Email Sending Settings
        $this->db->where("(user.userEmail = '$username' OR user.userUsername = '$username') OR (customer.cosEmail = '$username' OR customer.cosUserName = '$username')"); //
        $query = $this->db->get($this->table);

        if ($query->num_rows())
        {
            // found row by username    
            $row = $query->row_array();

            // now check for the password
            if ($row['userPass'] == $password OR $row['cosPassword'] == $password)
            {
                // we not need password to store in session
                unset($row['userPass' OR 'cosPassword']);
                $this->_data = $row;
                return ERR_NONE;
            }

            // password not match
            return ERR_INVALID_PASSWORD;
        }
        else {
            // not found
            return ERR_INVALID_USERNAME;
        }
    }

    public function get_data()
    {
        return $this->_data;
    }
我想在标题上显示客户或用户的信息。当客户登录时,客户可以看到自己的信息;当用户登录时,用户可以在同一仪表板中看到自己的信息

为此,我使用Codeigniter的SessionData。视图标题:

<li class="dropdown">
                <a data-toggle="dropdown" class="dropdown-toggle" href="#">
                    <img alt="" src="<?php echo base_url().'upload/user/'.$this->session->userdata('userImg'); ?>">
                    <span class="username"><?php echo $this->session->userdata('userName'); ?>  <?php echo $this->session->userdata('userSurname'); ?></span>
                    <b class="caret"></b>
                </a>
                <ul class="dropdown-menu extended logout">
                    <div class="log-arrow-up"></div>
                    <li><a href="<?php echo base_url(); ?>profile"><i class=" fa fa-suitcase"></i>Profile</a></li>
                    <li hidden><a href="#"><i class="fa fa-cog"></i> Settings</a></li>
                    <li hidden><a href="<?php echo base_url(); ?>notifications"><i class="fa fa-bell-o"></i> Notification</a></li>
                    <li><a href="<?php echo base_url(); ?>logout"><i class="fa fa-key"></i> Log Out</a></li>
                </ul>
            </li>
但系统显示用户名为1。它不起作用

我可以根据客户或使用userdata的用户显示哪些信息

我的登录控制器:

public function index()
    {   
        $this->logged_in_check();

        $this->load->library('form_validation');
        $this->form_validation->set_rules("username", "Username", "trim|required");
        $this->form_validation->set_rules("password", "Password", "trim|required");
        if ($this->form_validation->run() == true) 
        {
            $this->load->model('login_model', 'login'); 
            // check the username & password of user
            $status = $this->login->validate();
            if ($status == ERR_INVALID_USERNAME) {
                $this->session->set_flashdata("error", "Username or Email is invalid");
            }
            elseif ($status == ERR_INVALID_PASSWORD) {
                $this->session->set_flashdata("error", "Password is invalid");
            }
            else
            {
                // success
                // store the user data to session
                $this->session->set_userdata($this->login->get_data());
                $this->session->set_userdata("logged_in", true);
                // redirect to dashboard
                redirect("dashboard");
            }
        }   
        $this->load->view("login");
    }
您可以仅使用此函数并删除其他函数


另外,在视图中,使用此代码
echo$this->session->userdata('people\u name')
显示用户或客户名称。

您编写的是if语句;如果你想显示一些东西,请使用回音。。。e、 g:
echo$this->session->userdata('userName')
在设置会话数据的地方,显示该会话的代码,但我没有设置我的会话数据。如何设置?我添加了登录控制器。我已经写了//echo$this->session->userdata('userName')@ahmad I解释:当客户登录时,客户可以看到自己的信息,或者当用户登录时,用户可以在标题上看到自己的信息。我可以这样做吗?然后您可以从db获取用户或客户数据,然后设置他的会话数据。评论不用于扩展讨论;这段对话已经结束。
public function index()
    {   
        $this->logged_in_check();

        $this->load->library('form_validation');
        $this->form_validation->set_rules("username", "Username", "trim|required");
        $this->form_validation->set_rules("password", "Password", "trim|required");
        if ($this->form_validation->run() == true) 
        {
            $this->load->model('login_model', 'login'); 
            // check the username & password of user
            $status = $this->login->validate();
            if ($status == ERR_INVALID_USERNAME) {
                $this->session->set_flashdata("error", "Username or Email is invalid");
            }
            elseif ($status == ERR_INVALID_PASSWORD) {
                $this->session->set_flashdata("error", "Password is invalid");
            }
            else
            {
                // success
                // store the user data to session
                $this->session->set_userdata($this->login->get_data());
                $this->session->set_userdata("logged_in", true);
                // redirect to dashboard
                redirect("dashboard");
            }
        }   
        $this->load->view("login");
    }
 public function index(){   
    $this->load->library('form_validation');
    $this->form_validation->set_rules("username", "Username", "trim|required");
    $this->form_validation->set_rules("password", "Password", "trim|required");
    if ($this->form_validation->run() == FALSE) 
    {
        $this->session->set_flashdata("error", validation_errors());
        $this->load->view("login");
    }
    else{
        $username = $this->input->post('username');
        $password = $this->input->post('password');
        $user_data = $this->db->query("(SELECT * FROM user WHERE  userUsername = '$username' OR userEmail = '$username' AND userPass = '$password')");
        $cus_data = $this->db->query("(SELECT * FROM customer WHERE  cosUserName = '$username' OR cosEmail = '$username' AND cosPassword = '$password')");
        if ($user_data->num_rows() > 0) {
            foreach ($user_data->result_array() as $row) {
                $this->session->set_userdata('people_name',$row['userUsername']);
                $this->session->set_userdata("logged_in", true);
            }
            // redirect to dashboard
            redirect("dashboard");
        }
        elseif ( $cus_data->num_rows() > 0) {
            foreach ($cus_data->result_array() as $row) {
                $this->session->set_userdata('people_name',$row['cosUserName']);
                $this->session->set_userdata("logged_in", true);
            }
            // redirect to dashboard
            redirect("dashboard");
        }
        else{
            $this->session->set_flashdata("error", "Username or Email is invalid");
            $this->load->view("login");
        }
    }  
}