当我包括$ this-> load-> library('session');属性会话将自动销毁

时间:2016-10-26 12:24:16

标签: php html codeigniter session codeigniter-3

每当我在代码点火器函数中添加$this->load->library('session');属性时,会话将自动销毁.. 请帮帮我...

控制器功能:

public function logged()
{    
   $this->load->library('session');
   $this->load->view('includes/header');
   $this->load->view('includes/nav');
   $this->load->view('index'); 
   $this->load->view('includes/footer');
}

查看页面:

<h4><?php echo $this->session->flashdata('item'); ?></h4>
  

错误:遇到PHP错误

     

严重性:注意

     

消息:未定义的属性:CI_Loader :: $ session

     

文件名:views / index.php

     

行号:6

     

回溯:

     

文件:C:\ xampp \ htdocs \ ravi2 \ application \ views \ index.php行:6   功能:_error_handler

     

文件:C:\ xampp \ htdocs \ ravi2 \ application \ controllers \ welcome.php行:   19功能:查看

     

文件:C:\ xampp \ htdocs \ ravi2 \ index.php行:315功能:require_once

4 个答案:

答案 0 :(得分:1)

如果您不想在autoload.php中添加会话库,请在控制器构造函数中手动加载:

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

Most Important from the Manual:因为Loader类是由CodeIgniter的基本控制器实例化的,所以在尝试从控制器构造函数中加载库之前,请确保调用parent :: __ construct()。 < / p>

public function __construct()
{
    parent::__construct();
    $this->load->library('session');
}

在视图中你可以使用:

if($this->session->flashdata('item')){
   // to do
}

答案 1 :(得分:0)

两个建议:
1)可能只是auto-load自动加载配置文件中的会话库。

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

或者,也许您是默认情况下,控制器功能中的次要负载会导致初始负载。

2)如果您无法自动加载会话库,则可以将其加载到已记录函数所在的控制器构造中。

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

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

答案 2 :(得分:0)

您必须在查看之前设置闪存数据,即使您没有设置也要尝试回显flashdata,这是如何使用您的会话,首先使用控制器上的构造函数加载会话:

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

或在库自动加载中自动加载会话助手,然后像这样设置flash数据:

 $this->session->set_flashdata("flashdataname", "data");

然后在尝试回复之前始终检查flashdata是否已设置,例如:

if (!empty($this->session->flashdata("flashdataname"))) 
echo ....

答案 3 :(得分:0)

在构造函数{magic method}

中加载会话库
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Controller extends CI_Controller {
public function __construct() {
    parent::__construct();
    $this->load->library('session');
}
public function logged() {  
    $this->load->view('includes/header');
    $this->load->view('includes/nav');
    $this->load->view('index'); 
    $this->load->view('includes/footer');
  }
}