如何获取 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_r
或var_dump($user_data)
以查看它在$user_data
变量中的作用
编辑:现在你已经更新了你的帖子,我很清楚你需要做的就是这个。
<?php
$user_data = $this->session->userdata('0');
echo $user_data->name;
?>
【讨论】:
什么都不显示。它甚至没有显示任何错误。你能建议我在从数据库中获取更多数据后向用户数据会话添加更多值吗? 你能不能做一个var_dump($this->session->all_userdata())
并用它的输出来更新你的原始帖子?我认为您的原始帖子有一些错误。
我也刚刚更新了我的帖子,带您完成设置和获取用户数据的整个过程
session->userdata('0');回显 $user_data-> 名称; ?> 它奏效了。非常感谢:D
是的。您可以看到它是我为您格式化的数组输出中的一个对象。你一定做过$this->session->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 变量的值?的主要内容,如果未能解决你的问题,请参考以下文章