这是在控制器中
class LandingPage extends CI_Controller {
public function startEncryptedSession(){
$this->load->library('session');
$this->load->library('encrypt');
$this->load->view('index', array('session', $this->session));
}
}
如何在视图index
view
代码
<?php echo $head; ?>
<body>
<?php echo $guts; ?>
</body>
<?php echo $foot; ?>
<?php echo $session->userdata('session_key'); ?>
我正在使用代码点火器MVC
当我加载视图时,它会给我:
<h4>A PHP Error was encountered</h4>
<p>Severity: Notice</p>
<p>Message: Undefined variable: session</p>
<p>Filename: views/index.php</p>
<p>Line Number: 8</p>
</div><br />
<b>Fatal error</b>: Call to a member function userdata() on a non-object
答案 0 :(得分:0)
您需要将要使用的变量传递给视图。 像这样:
单向:
在您的控制器中:
public function startEncryptedSession(){
$this->load->library('session');
$this->load->library('encrypt');
$data = array('session_key' => $this->session->userdata('session_key'));
$this->load->view('index', $data);
}
在您看来:
<?php echo $session_key; ?>
另一种方式:
在您的控制器中:
public function startEncryptedSession(){
$this->load->library('session');
$this->load->library('encrypt');
$data = array('session' => $this->session->all_userdata());
$this->load->view('index', $data);
}
在您看来:
<?php echo $session['session_key']; ?>
建议:CodeIgniter的会话类有点糟糕,因为它将数据存储在cookie上并且数据大小限制非常低(或者至少是我上次检查它的工作方式)...所以你可能会这么做想要使用PHP的默认会话函数或创建自己的类来处理它。但是我会留给你检查,因为它不是你要问的。