Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.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

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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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
Php 如何获取会话数组数据CodeIgniter_Php_Codeigniter_Session_Model View Controller - Fatal编程技术网

Php 如何获取会话数组数据CodeIgniter

Php 如何获取会话数组数据CodeIgniter,php,codeigniter,session,model-view-controller,Php,Codeigniter,Session,Model View Controller,如果我将会话数据更改为数组(我是CodeIgniter的新手),我不太清楚为什么用户名没有出现在查看页面上。我有authcontroller来进行登录过程: function index() { $this->load->library('form_validation'); $this->form_validation->set_rules('username', 'username', 'required|trim|xs

如果我将会话数据更改为数组(我是CodeIgniter的新手),我不太清楚为什么用户名没有出现在查看页面上。我有
auth
controller
来进行登录过程:

function index() {
            $this->load->library('form_validation');
            $this->form_validation->set_rules('username', 'username', 'required|trim|xss_clean');
            $this->form_validation->set_rules('password', 'password', 'required|trim|xss_clean');

        if ($this->form_validation->run() == FALSE) {
            $this->load->view('Login');
            # code...
        }
        else {
            $username = $this->input->post('username');
            $password = $this->input->post('password');
            $check = $this->M_login->check($username, $password);

            // session data
            if ($check->num_rows() == TRUE) {
                foreach ($check->result() as $value) {
                    $sess_data['id']            = $value->id;
                    $sess_data['name']          = $value->name;
                    $sess_data['username']      = $value->username;
                    $sess_data['password']      = $value->password;
                    $sess_data['description']   = $value->description;
                    $this->session->set_userdata($sess_data);                        
            }
            redirect('Dashboard');
        }
        else {
            $this->session->set_flashdata('result_login', '<br>Invalid username or password, try again.');
            redirect('Login');
        }
使用以上代码,我可以通过
echo$username
在仪表板视图中获取用户名。但当我像这样更改会话数据时:

if ($check->num_rows() == TRUE) {
   foreach ($check->result() as $value) {

   // session data
   $sess_data = array(
               'id'           => $value->id,
               'username'     => $value->username,
               'password'     => $value->password,
               'name'         => $value->name,
               'description'  => $value->description
             );
   $this->session->set_userdata('log',$sess_data);
   }
}
if(!$this->session->userdata('id')) {
     $getdata= $this->session->userdata('log');

     $data['username'] = $getdata['username'];
}
$this->load->view('Dashboard', $data);
仪表板控制器更改如下:

if ($check->num_rows() == TRUE) {
   foreach ($check->result() as $value) {

   // session data
   $sess_data = array(
               'id'           => $value->id,
               'username'     => $value->username,
               'password'     => $value->password,
               'name'         => $value->name,
               'description'  => $value->description
             );
   $this->session->set_userdata('log',$sess_data);
   }
}
if(!$this->session->userdata('id')) {
     $getdata= $this->session->userdata('log');

     $data['username'] = $getdata['username'];
}
$this->load->view('Dashboard', $data);
然后用户名从查看页面中消失。如何在会话数组中存储用户名并在查看页面中调用它。请分享你的建议或经验


谢谢。

在会话中添加数据:-

$newdata = array(
               'username'  => 'johndoe',
               'email'     => 'johndoe@some-site.com',
               'logged_in' => TRUE
           );

$this->session->set_userdata($newdata);
$session_id = $this->session->userdata('username');
从会话检索数据:-

$this->session->all_userdata()
检索单个数据:-

$newdata = array(
               'username'  => 'johndoe',
               'email'     => 'johndoe@some-site.com',
               'logged_in' => TRUE
           );

$this->session->set_userdata($newdata);
$session_id = $this->session->userdata('username');
您可以参考此代码

public function loginaction()
{
    $this->load->library('session');
    $a      =   $this->input->post('email');
    $b      =   trim($this->input->post('password'));
    $b1     =   md5($b);
    $c      =   1;
    $data   =   $this->userdata->userlogin($a,$b1,$c);
    if($data)
    {
        echo true;
        foreach ($data as $login)
        {
            $uid=$this->session->set_userdata('logId',$login->usr_id);
        }
    }
    else
    {
        echo "Invalid username or password..!!!!";
        $a=$this->input->post('email');
    }
}
你可以这样做

$username   = $this->input->post('username');
$password   = $this->input->post('password');
$check      = $this->M_login->check($username, $password);

if ($check->num_rows() > 0) 
{
    $value = $check->row();
    $sess_data['id']            = $value->id;
    $sess_data['name']          = $value->name;
    $sess_data['username']      = $value->username;
    $sess_data['password']      = $value->password;
    $sess_data['description']   = $value->description;
    $this->session->set_userdata($sess_data);   
    redirect('Dashboard');
}
else
{
    $this->session->set_flashdata('result_login', '<br>Invalid username or password, try again.');
    redirect('Login');
}

正如我前面提到的,我的代码是使用单一数据方法的,我尝试了你的数组建议,但仍然不起作用。哦,我已经解决了这个问题。我想我写错了代码,所以这里是工作代码:仪表板控制器
public function\uuuu-construct(){parent::\uuu-construct();if(!$this->session->userdata('log')){redirect('login');}}公共函数index(){$username=$this->session userdata('log'));//将其以数组形式传递给视图,如$data['username']=$username['username'];$this->load->view('Dashboard',$data);}
我的回答对您有帮助吗?