Php 会话不';无法保存自定义用户数据

Php 会话不';无法保存自定义用户数据,php,codeigniter,session,Php,Codeigniter,Session,我是CodeIgniter的新手,我开始使用会话库 我已自动加载会话库并尝试将当前用户id保存到会话userdata数组。但是当我试图在另一页上阅读时,信息就消失了 本机PHP会话工作得很好(经过测试),所以它一定是来自CI的 我编写了一个简单的测试页面,在其中我测试了以下内容: 设置会话userdata 测试页面正确显示用户数据 取消对控制器代码中设置会话数据行的注释,然后重新加载页面 测试页不显示用户数据 控制器的代码: class Welcome extends CI_Controll

我是CodeIgniter的新手,我开始使用会话库

我已自动加载会话库并尝试将当前用户id保存到会话userdata数组。但是当我试图在另一页上阅读时,信息就消失了

本机PHP会话工作得很好(经过测试),所以它一定是来自CI的

我编写了一个简单的测试页面,在其中我测试了以下内容:

  • 设置会话userdata
  • 测试页面正确显示用户数据
  • 取消对控制器代码中设置会话数据行的注释,然后重新加载页面
  • 测试页不显示用户数据
控制器的代码:

class Welcome extends CI_Controller {

   public function index(){ 
        $data = null;

        $data['test'] = "Yeeeeh!!";
        $this->session->set_userdata($data);

        $this->load->view('welcome_message', $data);
    }
}
视图代码:

<?php
    echo $this->session->userdata('test');
?>

为什么视图显示会话id而不是您创建的“测试”变量

你测试了吗

<?php
echo $this->session->userdata('test');


在视图文件中?

CI的会话是cookie,而不是PHP本机会话。在视图中调用会话是可行的(IIRC),但由于视图是在创建会话的同一请求中加载的,因此不会对其进行设置

您需要在另一个请求(即另一个控制器)上调用它,或者在其他地方设置会话(在另一个控制器中,通过AJAX也可以工作),或者改用本机PHP$\u会话数组

我认为您的实际代码只是一个测试用例,否则为什么不

public function index(){ 
        $data = null;

        $data['test'] = "Yeeeeh!!";
        $this->session->set_userdata($data);

        $this->load->view('welcome_message', $data);
    }
鉴于:

<?php
  echo $test;
?>


提问前,请阅读本手册,了解会话助手的工作原理。请参阅此处:Thx以获取清晰的注释。。。我读了手册,做了上面说的所有事情。我自动加载了库,设置了会话vdata,然后尝试读取它。因此,如果您没有收到任何错误,您可以安装它。现在再次阅读手册,但这次是关于如何使用它。特别是关于如何命名会话值的部分。我在stackoverflow中输入了一个错误。。如果您阅读了bullit列表,那么在步骤2中,您将看到输出成功。。在第四步中,不要!好的,下一步是了解什么是视图,以及如何将变量传递到视图中。看,我在stackoverflow中输入了一个错误。很抱歉我认为代码正如你所说。谢谢你的回答。这实际上只是一个测试用例。我想设置当前loggedin用户,并希望能够在需要时读取此信息。我想我将使用本机PHP会话来实现这一点,也许可以使用加密库对数据进行加密。问题是要将数据存储到会话中,您要将其直接传递给th视图。