如何在codeigniter中同时获取所有函数的会话?

时间:2017-07-11 04:09:06

标签: php codeigniter session

我在登录功能中创建了会话。现在我想在所有其他函数上使用创建的会话,如果用户登录,则创建的会话应该应用于所有其他函数。

由于

3 个答案:

答案 0 :(得分:1)

我认为你需要先了解会话。

会话如何运作?

会话通常会在每次页面加载时全局运行,因此Session类应该在控制器构造函数中初始化,或者可以由系统自动加载。在大多数情况下,会话类将在后台无人值守运行,因此只需初始化类将使其在必要时读取,创建和更新会话。

要在控制器构造函数中手动初始化Session类,请使用$ this-> load-> library()方法:

$this->load->library('session');

加载后,Sessions库对象将可用:

$this->session

会话数据只是与特定会话ID(cookie)相关联的数组。

访问CI会话文档了解更多详情 在此处观看: Session

答案 1 :(得分:0)

在您的登录部分

$this->db->where('email',$email);
$this->db->where('password',$pass);
   $query = $this->db->get('admin');
$data= $query->result_array();
if($data){
$this->session->set_userdata('sessionVariable', $data);
redirect('controller_name');
}

application/config/autoload.php

打开autoload.php
$autoload['libraries'] = array('session');

OR

在控制器的__construct()中加载会话库

public function __construct()
    {
        parent::__construct();

                $this->load->library('session');

    }

获取会话数据

$sessionData   = $this->session->userdata('sessionVariable');

答案 2 :(得分:0)

您可以在config.php

中自动加载会话
$autoload['libraries'] = array('database','Session','email');

您可以在Core文件夹中创建一个基本控制器,并将所有其他控制器扩展到该基本控制器。

喜欢这个

<?php
class MY_Controller extends CI_Controller {

public $data = array();
    function __construct() {

        parent::__construct();

        $this->data['errors'] = array();

        $this->data['site_name'] = config_item('site_name');
        $this->load->library('session');



    }
}       

现在,所有其他控制器都应扩展到基本控制器而不是CI_Controller

在您的控制器中

控制器1

class Login extends MY_Controller
{
  function __construct() {

        parent::__construct();


 }


}

控制器2:

class Dashboard extends MY_Controller
{
  function __construct() {

        parent::__construct();


 }


}

所以你只需要加载你的库就是你的基本控制器,并获得子控制器中所有基本控制器的优点。这样可以为您提供更好的hierarchycode managementsecurity