【问题标题】:Not displaying SESSION ITEM / VARIABLE codeIgniter不显示 SESSION ITEM / VARIABLE codeIgniter
【发布时间】:2025-12-28 06:50:16
【问题描述】:

大家好,我的会话有数据 但我无法显示一个项目,例如我只想要 ID

Array ( [__ci_last_regenerate] => 1538534437 [logged_in] => 1 [profile] => stdClass Object ( 
[id] => 1 
[email] => teacher@email.com 
[role_id] => 2 
[tekteach_login_flag] => 1 
[date_registered] => 2018-07-27 16:07:50 
[deleted] => 0 
[first_name] => Elena 
[last_name] => Cruz 
[middle_name] => Santos 
[gender] => Female 
[birthday] => 1970-01-01 
[status] => Active 
[created_on] => 2018-06-01 05:28:26 
[created_by] => 
[modified_on] => 
[modified_by] => 0 
[deleted_by] => 0 ) )

我的代码是这样的

print_r($this->session->userdata);

$userID = $this->session->userdata('id');

$this->session->set_userdata('id',$userID);

echo $this->session->userdata('id');

【问题讨论】:

  • 您是否自动加载或启动了会话库?如果您粘贴整个控制器代码会更好。
  • 是的,它是自动加载的,我现在可以得到结果,btw thamk you

标签: php codeigniter session


【解决方案1】:

您的 print_r 显示您的 id(及其好友)已存储在名为 profile 的对象中。

所以我根据您展示的内容以及您如何读回这些值创建了一个小测试脚本。

//
// Using Objects - most likely from a Database result set
//
// Create the session test data
$profile = (object)array();
$profile->id = 1;
$profile->name = 'Fred';


// Display the full session
$this->session->set_userdata('profile', $profile);
var_dump($this->session->userdata());

$profile = $this->session->userdata('profile');
var_dump($profile);

echo 'userId is ' . $profile->id;  // Std Object
echo '<br>';
echo 'userId is ' . $this->session->profile->id; // Magic Method

结果

array (size=2)
  '__ci_last_regenerate' => int 1538540690
  'profile' => 
    object(stdClass)[18]
      public 'id' => int 1
      public 'name' => string 'Fred' (length=4)

object(stdClass)[18]
  public 'id' => int 1
  public 'name' => string 'Fred' (length=4)

userId is 1
userId is 1

当然,您可以使用 print_r() 代替 var_dump()。我只是更喜欢 var_dump()。

【讨论】:

    【解决方案2】:

    您在会话中有配置文件对象。使用下面获取 id

    $profile = $this->session->userdata('profile');
    $id = $profile->id;
    echo $id;
    

    【讨论】: