Php CodeIgniter会话数据不工作

Php CodeIgniter会话数据不工作,php,codeigniter,session,Php,Codeigniter,Session,我在登录时创建了一个会话,但它既没有保存我存储在会话中的变量,也没有将它们带到其他页面: 控制器代码: function CheckDatabase($password) //This function is only run when password validation is correct.// { $username = $this->input->post('Username'); //Sets the username as a $username.//

我在登录时创建了一个会话,但它既没有保存我存储在会话中的变量,也没有将它们带到其他页面:

控制器代码:

    function CheckDatabase($password) //This function is only run when password validation is correct.//
{
    $username = $this->input->post('Username'); //Sets the username as a $username.//
    $result = $this->User_model->Login($username, $password);

    if($result)
    {
        $sess_array = array();
        foreach($result as $row)
        {
            $sess_array = array( //Makes an array of the data to be stored in the session.//
            'UserID' => $row->UserID,
            'Username' => $row->Username
            );

            $this->session->set_userdata('logged_in', $sess_array); //Sets $sess_array as the session.//
        }

        return TRUE;
   }

    else //Ran if the username or password aren't matched in the CIUsers database. Returns error message.//
    {
        $this->form_validation->set_message('CheckDatabase', 'Invalid login details.');
        return false;
    }
}
同一控制器上的索引功能(应阻止用户返回登录屏幕,但不会)

主视图上的代码(登录后指向哪个浏览器)


我在显示会话数据时遇到以下错误:

消息:未定义变量:Username

文件名:views/Home\u view.php

电话号码:9


要检索会话变量,必须执行以下操作

 $username = $this->session->userdata['logged_in']['Username'];
 echo $username;
$newdata = array(
                    'user_id' => $rows->id,
                    'user_name' => $rows->name,
                    'user_image' => $rows->user_image,
                    'user_email' => $rows->email,
                    'logged_in' => TRUE,  
                    'user_type' => $rows->user_type
                );
            }
            $this->session->set_userdata($newdata);

您必须像这样从会话中检索它,然后才能使用:

$user = $this->session->userdata('logged_in');
$Username = $user['Username'];
$UserID = $user['UserID'];
像这样试试

 $username = $this->session->userdata['logged_in']['Username'];
 echo $username;
$newdata = array(
                    'user_id' => $rows->id,
                    'user_name' => $rows->name,
                    'user_image' => $rows->user_image,
                    'user_email' => $rows->email,
                    'logged_in' => TRUE,  
                    'user_type' => $rows->user_type
                );
            }
            $this->session->set_userdata($newdata);
并签入用于用户会话的控制器构造

<?php
    if (!defined('BASEPATH'))
        exit('No direct script access allowed');
    class User extends CI_Controller {
            public function __construct() {
            parent::__construct();

        //Here we will check for the session value if it is true then the function will run else it will redirect to login page

            if ($this->session->userdata('logged_in') == FALSE) {
                redirect(site_url('your login page'));
            } else {
              // if there is session value
              redirect(site_url('User/your function name');
            }
    }
}
    ?>

}

 if($result)
{
    $sess_array = array();
    foreach($result as $row)
    {
        $sess_array = array( //Makes an array of the data to be stored in the session.//
        'UserID' => $row[0]->UserID,
        'Username' => $row[0]->Username
        );

        $this->session->set_userdata('logged_in', $sess_array); //Sets $sess_array as the session.//
    }

    return TRUE;