Codeigniter会话数据还是数据库查询? [英] Codeigniter session data or database query?

查看:63
本文介绍了Codeigniter会话数据还是数据库查询?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

How can I show customer's or user's information such as Name and Surname on the header?

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

Firstly, I have a login page. Customer and User can login to the dashboard on the same login page. While login process, it uses 2 database tables such as User and Customer. Login process system takes data from 2 database tables when customer and user login to dashboard.

登录模型:

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

我想在标题上显示客户或用户的信息.当客户登录时,客户可以看到自己的信息,或者当用户登录时,用户可以在同一仪表板上看到自己的信息.

And I want to show information of customer or user on the header. When customer login, the customer can see own information or when user login, the user can see own information in the same dashboard.

为此,我使用Codeigniter的SessionData.查看标题:

For this, I use SessionData of Codeigniter. View Header:

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

但是,当客户登录时我什么也没显示.因为我不知道在客户登录时如何显示客户信息.当客户登录仪表板时,我再次看到用户信息.我该如何设置我想要的?救救我,这很重要.

But I can't show anything when customer login. Because I don't know how can I show customer information when customer login. When customer login dashboard, I see user information again. How can I set this what I want? Help me, It is so important.

我尝试过:

$this->session->userdata('userName') || $this->session->userdata('cosName')

但是系统显示我的用户名为1.它不起作用.

But system shows me 1 on username. It doesn't work.

我该如何根据具有用户数据的客户或用户显示信息?

What can I show information according to customer or user with 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");
    }

推荐答案

您可以仅使用此功能并删除其他功能.

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

在视图中也使用此代码echo $this->session->userdata('people_name')显示用户名或客户名.

also in view use this code echo $this->session->userdata('people_name') to show user or customer name.

这篇关于Codeigniter会话数据还是数据库查询?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆