CodeIgniter自动加载会话未在控制器中加载

时间:2016-06-27 14:09:01

标签: php codeigniter session

我在config / autoload.php中将会话设置为自动加载

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

并在config / config.php

中配置会话和加密
$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'dornika';
$config['sess_expiration'] = 86400;
$config['sess_save_path'] = NULL;
$config['sess_match_ip'] = TRUE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = TRUE;  

然后我用

在一个数组中设置会话数据
$this->session->set_userdata($array);    

并使用

将其加载到控制器中

$this->session->userdata('login');

包含true 但在我的控制器中,它变为空而不是1(或真)

这是模型中的代码

$is_exist = $this->db->count_all_results();

        if($is_exist > 0){
         $data_session = array(
             'username' => $_POST['username'],
             'login' => true
         );
            $this->session->set_userdata($data_session);
            redirect('dashboard/index');
        }else{
            redirect('login');
        }

和控制器

<?php
defined('BASEPATH') OR exit('No direct script access allowed');


class Dashboard extends CI_Controller
{

    public function index()
    {
       $login = $this->session->userdata('login');
        if ($login == true) {

            $data['title'] = 'dashboard';
            $this->template->load('panel/dashboard', $data);

        }else{
            redirect('login');
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您正在尝试访问不存在的$this->session->userdata('login'),您没有为会话指定任何名称。您可以通过在设置会话时为其指定名称来解决此问题。

<强>代码

# Setting Session
$this->session->set_userdata("login", $array);    

# Accessing Session
$user_data = $this->session->userdata("login");
echo $user_data['some_key']; // or var_dump($user_data);