如何获取 codeigniter 会话 userdata 变量的值?

Posted

技术标签:

【中文标题】如何获取 codeigniter 会话 userdata 变量的值?【英文标题】:How can I get the value of a codeigniter session userdata variable? 【发布时间】:2015-06-02 05:47:55 【问题描述】:

我已经生成了包含会话数据的数组,

array(8) 
  ["session_id"]=> string(32) "1dc5eb3730601a3447650fa4453f36cd"
  ["ip_address"]=> string(3) "::1" 
  ["user_agent"]=> string(102) "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/41.0.2272.101 Safari/537.36" 
  ["last_activity"]=> int(1427602284) 
  ["user_data"]=> string(0) "" 
  ["roll_no"]=> string(6) "111416" 
  ["is_logged_in"]=> int(1) 
  [0]=> object(stdClass)#20 (6) 
     
      ["name"]=> string(13) "durex" 
      ["email"]=> string(25) "durex@gmail.com" 
      ["year"]=> string(1) "2" 
      ["semester"]=> string(1) "4" 
      ["branch"]=> string(2) "IT" 
      ["parent_email"]=> string(27) "parent@durex.com" 
     

如何使用上述会话 $userdata 回显名称(杜蕾斯)?

【问题讨论】:

你可以使用php的foreach()循环数组;并获得所需的输出。更多关于 foreach 的信息在 php 的文档网站 in3.php.net/manual/en/control-structures.foreach.php 【参考方案1】:

如果您想设置然后检索在 Codeigniter 2.0 中设置的一些用户数据,这是您将遵循的过程

<?php
        $user_array = array(
          'name' => 'bob',
          'email' => 'bob@bob.com'
        );

        $this->session->set_userdata('userdata', $user_array);
        
        $user_data = $this->session->userdata('userdata');

        //Returns User's name 
        echo $user_data['name'];
?>

我不确定您粘贴的内容是否格式正确。也请执行print_rvar_dump($user_data) 以查看它在$user_data 变量中的作用

编辑:现在你已经更新了你的帖子,我很清楚你需要做的就是这个。

<?php
$user_data = $this->session->userdata('0');

echo $user_data->name;
?>

【讨论】:

什么都不显示。它甚至没有显示任何错误。你能建议我在从数据库中获取更多数据后向用户数据会话添加更多值吗? 你能不能做一个var_dump($this-&gt;session-&gt;all_userdata()) 并用它的输出来更新你的原始帖子?我认为您的原始帖子有一些错误。 我也刚刚更新了我的帖子,带您完成设置和获取用户数据的整个过程 session->userdata('0');回显 $user_data-> 名称; ?> 它奏效了。非常感谢:D 是的。您可以看到它是我为您格式化的数组输出中的一个对象。你一定做过$this-&gt;session-&gt;set_userdata(0, $usersdata)【参考方案2】:

请检查这是否有效。 如果您从会话值中获取它:

<?php
        $user_data = $this->session->userdata('user_data');
        echo $user_data[0]['name'];
?>

如果你从你的数组中获取 if:

<?php

        echo $your_array_name['user_data'][0]['name'];
?>

注意:这是 PHP 中数组的正确格式

<?php
$my_array = Array ( 
  'session_id' => '8f9286115a38df9ed54a65b135d4e8c0',
  'ip_address' => '::1',
  'user_agent' => 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36',
  'last_activity' => 1427600580,
  'roll_no' => 111416, 
  'is_logged_in' => 1,
  'email' => '',
  'user_data' => Array ( 
     0 => Array ( 
       'name' => 'durex', 
       'email' => 'durex@gmail.com', 
       'year' => 2 ,
       'semester' => 4, 
       'branch' => 'CSE', 
       'parent_email' => 'parent@durex.com'
     )
  )
);
echo $my_array['user_data'][0]['name'];
?>

【讨论】:

如果我没看错,应该是echo $user_data[0]['name'] 您是从上面的数组中提取数据吗?还是来自会话数据?? 我试过 echo $user_data[0]['name'] 但给出了同样的错误。请建议任何其他方法,因为我想在登录后从数据库中获取的会话(用户数据)中添加更多值。 var_dump($user_data); die(); 显示什么?尝试一下,并将结果发布在问题帖子中 @Arzgethalm 我正在写这个 session->all_userdata())?>【参考方案3】:

1.获取您的会话并保存在变量中 $usernya = $this->session->get_userdata('sess');

2.现在你可以用简单的回显来显示数据了 echo $usernya['username'];

【讨论】:

【参考方案4】:

Codeigniter 3 中,您只需使用 PHP 的原生 $_SESSION 变量即可检索会话数据

$_SESSION['item']

或者通过魔法吸气剂

$this->session->item

它仍然允许传统的

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

更多in the docs

【讨论】:

以上是关于如何获取 codeigniter 会话 userdata 变量的值?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Codeigniter 中检查是不是设置了会话?

CodeIgniter 会话为空

如何使 Codeigniter 会话与边缘一起工作?

使用 CodeIgniter (3.1.0) 创建会话

Codeigniter在nodejs中读取会话cookie

如何在登录系统中使用会话并在codeigniter中实现注销