如何从表中获取特定的数据并将其存储在cookie codeigniter php中


How to take specific data from table and store it in a cookie codeigniter php?

我是新来的编码器和php,只有几天,所以我需要一点帮助。我试图把一些数据在我的cookie表,这样我就可以检查在哪里重定向用户登录后。

在表users中,有两列名为AdminCompany,如果用户是或不是,则为1或0,然后我希望将该信息插入cookie。

在user_controller中的函数构象为:

function conformation(){
    $this->load->model('user');
    $q = $this->user->confr();
    if($q){
        $data = array(
            'username' => $this->input->post('username'),
            'Admin' => $this->input->post($a = $this->user->getAdmin), // get 1/0 from users column Admin 
            'Company' => $this->input->post($c = $this->user->getComp),            
            'login' => true
        );
        if( $a == 1 ){ //is admin redirect to admin view 
           $this->session->set_userdata($data);
        redirect('user_controler/useradm');
        }
        if($c == 1){ //if company redirect to company view
          $this->session->set_userdata($data);
        redirect('user_controler/usercomp');
        }
        $this->session->set_userdata($data);// if common user redirect to user view
        redirect('user_controler/userpro');
    }
    else{ // if nothing above redirect to login page
        redirect('user_controler/log');
    }
}

在用户模型中:

function getAdmin{
   $this->db->where('Admin', 1);
   $a = $this->db->get('users');
}
function getComp{
   $this->db->where('Company', 1);
   $a = $this->db->get('users');
}
function conf(){
        $this->db->where('username', $this->input->post('username'));
        $this->db->where('password', $this->input->post('password'));
        $q = $this->db->get('users');
        if($q->num_rows == 1 ){
            return TRUE;                
        }
    }

也有站点控制器检查登录

class Site extends CI_Controller{
    function __construct() {
        parent::__construct();
        $this->login();
    }
    function login(){
        $login = $this->session->userdata('login');
        if(!isset($login) || login != TRUE){
            $this->log;
            die();
        }
    }
}

当然它不工作,因为我可能应该检查这些列一些其他的方式,但我不知道如何。我还启用了表ci_session,没有AdminCompany,它可以完美地工作。

大家好,欢迎来到Stackoverflow。

以下是我对代码的更新(我已经注释了我的更改):

function conformation(){
    $this->load->model('user');
    if($this->user->confr()){  //$q wasn't needed, as you are only using this twice
        $user = $this->input->post('username');  //I have added this as I will be referring to it a couple of times.
        $data = array(
            'username' => $user,
            'Admin' => $this->user->getAdmin($user), // Your method was questioning the original form looking for data that it would never find - This will question your model.
            'Company' => $this->user->getComp($user), //Same as above            
            'login' => true
        );
        $this->session->set_userdata($data);  //It doesn't matter who the user is, we shall set the data to start with.
        if($this->user->getAdmin($user)){ //is admin redirect to admin view 
           redirect('user_controler/useradm');
        }
        elseif($this->user->getComp($user)){ //if company redirect to company view
            redirect('user_controler/usercomp');
        }
        else { //Redirect non-privileged users.
            redirect('user_controler/userpro');
        }
    }
    else{ // if nothing above redirect to login page
        redirect('user_controler/log');
    }
}

用户模型:

function getAdmin($user){
   $this->db->where('username', $user); //Before you was just returning everyone who is an admin   This instead finds the user
   $a = $this->db->get('users');
   foreach($a as $u) {
       if($u["Admin"]==1) { return true; }  //This finds if the user is a admin or not, and the function will now return a value (true)
   }
}
function getComp($user) {
   $this->db->where('username', $user); 
   $a = $this->db->get('users');
   foreach($a as $u) {
       if($u["Company"]==1) { return true; }
   }
}  //Edited similar to the function above
function conf(){
    $this->db->where('username', $this->input->post('username'));
    $this->db->where('password', $this->input->post('password'));
    $q = $this->db->get('users');
    if($q->num_rows == 1 ){
        return TRUE;                
    }
}

最后你的登录功能:

function login(){
    $login = $this->session->userdata('login');
    if(!isset($login) || $login != TRUE){  //You weren't referring to your $login variable
        $this->log;
        die();
    }
}

希望这能帮助你解决问题,如果你需要任何修改,请告诉我。