Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Codeigniter 有效地将变量从模型传递到会话中_Codeigniter_Session Variables - Fatal编程技术网

Codeigniter 有效地将变量从模型传递到会话中

Codeigniter 有效地将变量从模型传递到会话中,codeigniter,session-variables,Codeigniter,Session Variables,我是新的代码点火器和MVC PHP,我已经创建了一个基本的登录系统与在线资源,它的工作,我现在试图改善它来学习 我的模型: function validate(){ $this->db->where('Email', $this->input->post('email')); $this->db->where('Password', sha1($this->input->post('passwor

我是新的代码点火器和MVC PHP,我已经创建了一个基本的登录系统与在线资源,它的工作,我现在试图改善它来学习

我的模型:

function validate(){


            $this->db->where('Email', $this->input->post('email'));
            $this->db->where('Password', sha1($this->input->post('password')));
            $query = $this->db->get('admin_users');

        if($query->num_rows == 1){

            return true;
        }

    }

    function get_admininfo(){


        $this->db->where('Email', $this->session->userdata('email'));
        $query = $this->db->get('admin_users');

        return $query->result();
    }
一个用户验证了我想提取他们的一些信息并将其存储在会话中,用于通知和类似的化身

我的控制器如下所示:

 function validate_credentials(){

        //load the adminship model and then the function validate within it.
        $this->load->model('adminship_model');
        $query = $this->adminship_model->validate();

        // If the admin user successfully validated.
        if($query){

            $admininfo = $this ->adminship_model->get_admininfo();

            $data = array(

                'email' => $this->input->post('email'),
                'username' => $this->$admininfo['username'],
                'is_logged_in' => true
            );

            $this->session->set_userdata($data);
            redirect('dashboard_controller/dashboard');


        }else{

           $this->index();

        }

    }
在我设置的仪表板控制器中:

        $data['email'] = $this->session->userdata('email');
        $data['email'] = $this->session->userdata('username');
并将其传递给视图,当我回显$email时,我会收到该电子邮件,但用户名不起作用,我会收到以下错误:

消息:未定义索引:用户名

这一行:

'username' => $this->$admininfo['username'],

我知道我从模型中提取信息的方式不对,请有人给我指出正确的方向。

尝试将模型功能更改为:

 function get_admininfo(){
    $this->db->where('Email', $this->session->userdata('email'));
    $query = $this->db->get('admin_users');

    if($query->num_rows() == 1){
       foreach($query->result() as $row){
            $data = $row;
       }
       return $data;

    } else {
    return FALSE;
    }
 }
然后尝试通过以下方式获取数据:

   $admininfo = $this ->adminship_model->get_admininfo();
        $data = array(

            'email' => $this->input->post('email'),
            'username' => $admininfo->username,
            'is_logged_in' => true
        );
编辑

尝试获取所有用户数据(),因为您将使用它:

$data['userdata']=$this->session->all_userdata();//返回关联数组

然后将其传递到视图,并使用
$userdata['username']
在视图中显示出来,这通常对我来说很好

选项

如果上面的代码不起作用,最简单的方法可能是指定列的名称,如:

function get_admininfo(){
    $this->db->where('Email', $this->session->userdata('email'));
    $query = $this->db->get('admin_users');

    if($query->num_rows() == 1){
        $row = $query->row(); 
        return $row->username; //assuming this is the name of the column
    } else {
    return FALSE;
    }
 }
将控制器代码更改为:

        $admininfo = $this ->adminship_model->get_admininfo();
        $data = array(

            'email' => $this->input->post('email'),
            'username' => $admininfo,
            'is_logged_in' => true
        );
功能

function get_admininfo(){


    $this->db->where('Email', $this->session->userdata('email'));
    $query = $this->db->get('admin_users');

    return $query->result();
}
正在尝试将查询作为对象返回

正在尝试从$this->admininfo将$data['username']设置为预期的数组值,但返回了一个对象

尝试更改:

return $query->result();


我这样做,然后当我想显示它:$data['username']=$this->session->userdata('username');并且在视图中:。但是我得到了这个错误:消息:类的对象\uuuu PHP\u complete\u类无法转换为string@ObjectiveJ检查编辑,看看是否有帮助。我还想提到,在您熟悉codeigniter之后,请查看下面jamie Rummer提供的两个库的mashup:。它允许更容易地创建CRUD模型,并帮助实现“不要重复自己”模式。
return $query->result();
return $query->row_array();