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
Session Codeigniter重定向()问题_Session_Codeigniter_Redirect_Codeigniter 2 - Fatal编程技术网

Session Codeigniter重定向()问题

Session Codeigniter重定向()问题,session,codeigniter,redirect,codeigniter-2,Session,Codeigniter,Redirect,Codeigniter 2,我已经创建了一个MY_Controller类来检查会话 我的LoginController正在检查用户信息,如果没有问题,我将用户重定向到PainelController。我使用重定向,因此我的url将用/localhost/painel而不是/localhost/session/login刷新 问题是,当我使用重定向时,我无法访问我的会话,只能使用load->view 有解决办法吗 提前感谢您的帮助 PS:我使用.htaccess,在 编辑 登录项:扩展CI_控制器 if( $rs )

我已经创建了一个MY_Controller类来检查会话

我的LoginController正在检查用户信息,如果没有问题,我将用户重定向到PainelController。我使用重定向,因此我的url将用/localhost/painel而不是/localhost/session/login刷新

问题是,当我使用重定向时,我无法访问我的会话,只能使用load->view

有解决办法吗

提前感谢您的帮助

PS:我使用.htaccess,在

编辑

登录项:扩展CI_控制器

if( $rs )
            {

                $this->session->set_userdata('usuario', $usuario);//usuario is a object
                //$this->load->view('painel');//it works
                redirect('painel', 'location');//it doesn't
            }
            else
            {
                $this->load->view('login', $data = array('mensagem'=>'Usuário ou senha inválidos.'));
            }
-

我的佩内尔观点

echo $this->session->userdata('usuario')->usuario_nome; //it works
only if I load->view('painel')
即使我尝试在PainelController扩展我的_控制器上访问此会话值,它也不会工作,会说:

Message: main() [function.main]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "Usuario" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition

我在我的CI沙盒上尝试了几次重定向,但我没有丢失会话。您在PainelController中使用了哪些库/帮助程序? 似乎您没有@session\u start;在那个特定的控制器中

通常,您可以使用现有的Auth库来处理此问题,然后将其包含在每个控制器的构造函数中,甚至包含在MY_控制器中。 下面是一个例子:

class Events extends CI_Controller {
// Constructor function
public function __construct()
{
    //load initial models and libraries that are needed for the controller
    parent::__construct();
    $this->load->library('auth');
            ...
    }
    ...
}
然后我的auth库会有一个这样的构造函数

class Auth {
  var $CI       = NULL;

  function Auth($props = array())
  {
    $this->CI =& get_instance();

    // Load additional libraries, helpers, etc.
    $this->CI->load->library('session');
    $this->CI->load->database();
    $this->CI->load->helper('url');
    @session_start();
  }
  ...
}
编辑:

您还可以将其包含在自动加载中,通常位于config/autoload.php。

这里有一个例子

/*
| -------------------------------------------------------------------
|  Auto-load Libraries
| -------------------------------------------------------------------
| These are the classes located in the system/libraries folder
| or in your application/libraries folder.
|
| Prototype:
|
|   $autoload['libraries'] = array('database', 'session', 'xmlrpc');
*/

$autoload['libraries'] = array('database','session', 'encrypt');

我在我的CI沙盒上尝试了几次重定向,但我没有丢失会话。您在PainelController中使用了哪些库/帮助程序? 似乎您没有@session\u start;在那个特定的控制器中

通常,您可以使用现有的Auth库来处理此问题,然后将其包含在每个控制器的构造函数中,甚至包含在MY_控制器中。 下面是一个例子:

class Events extends CI_Controller {
// Constructor function
public function __construct()
{
    //load initial models and libraries that are needed for the controller
    parent::__construct();
    $this->load->library('auth');
            ...
    }
    ...
}
然后我的auth库会有一个这样的构造函数

class Auth {
  var $CI       = NULL;

  function Auth($props = array())
  {
    $this->CI =& get_instance();

    // Load additional libraries, helpers, etc.
    $this->CI->load->library('session');
    $this->CI->load->database();
    $this->CI->load->helper('url');
    @session_start();
  }
  ...
}
编辑:

您还可以将其包含在自动加载中,通常位于config/autoload.php。

这里有一个例子

/*
| -------------------------------------------------------------------
|  Auto-load Libraries
| -------------------------------------------------------------------
| These are the classes located in the system/libraries folder
| or in your application/libraries folder.
|
| Prototype:
|
|   $autoload['libraries'] = array('database', 'session', 'xmlrpc');
*/

$autoload['libraries'] = array('database','session', 'encrypt');


我在这件事上一分也没有?你的会话是否在重定向后自行清除?如果是,我不知道为什么以及如何清除,因为当我使用load->view时,它工作正常,只有重定向给了我这个问题。你可以通过回显某个会话变量来检查它是否被清除。因此你可以访问你的会话???@Gerep这似乎是对CI核心的某种限制当你加载视图时,它可以工作,但在重定向时,它似乎不起作用。我在这方面没有得到一点什么?你的会话是否在重定向后自行清除?如果是,我不知道为什么以及如何清除,因为当我使用load->view时,它工作正常,只有重定向给了我这个问题。你可以通过回显某个会话变量来检查它是否被清除。因此你可以访问你的会话???@Gerep这似乎是对CI核心的某种限制它在加载视图时工作,但在重定向时似乎不工作。CodeIgniter的会话库为您启动会话。\u。这就是为什么我要他的库,但他似乎没有。通常,在每个控制器或方法中都有一个用于处理限制或权限的身份验证库,而不是冗余的会话身份验证。问题是,我必须在每个控制器上加载身份验证库。您不必这样做。这是自动加载配置。我会把这个加到我的答案中。CodeIgniter的会话库为您启动会话。这就是为什么我要他的库,但他似乎没有。通常,在每个控制器或方法中都有一个用于处理限制或权限的身份验证库,而不是冗余的会话身份验证。问题是,我必须在每个控制器上加载身份验证库。您不必这样做。这是自动加载配置。我会把这个加到我的答案中。