按照上面的标题,当我用超链接触发控制器时,它会运行控制器功能,但是在从控制器重定向后我无法获得SESSION的值。代码如下......
function langpref($lang){
$this->load->helper('url');
redirect(ABSOLUTE_PATH, 'location');
$this->session->set_userdata('cur_lang', 'xxx');
}
*注意:ABSOLUTE_PATH是超链接的常量,我已经在自动加载文件中加载了SESSION库。
在我的视图文件中,我编写了如下代码......
<?php echo $this->session->userdata('cur_lang');?>
并且它不会打印出SESSION值。
答案 0 :(得分:1)
第一种方法:您无法访问此类会话变量
<?php $ci =& get_instance(); ?>
<div>
<?php echo $ci->session->userdata('cur_lang') ?>
</div>
第二种方法:另一种方法是将会话数据传递给视图
在您的控制器上
$data['userdata'] = $this->session->userdata;
$this->load->view('your/view', $data);
在你的观点
echo $userdata['cur_lang'];
答案 1 :(得分:1)
不应该是:
function langpref($lang){
$this->load->helper('url');
$this->session->set_userdata('cur_lang', 'xxx');
redirect(ABSOLUTE_PATH, 'location');
}
在你看来:
<?php echo $this->session->userdata("cur_lang"); ?>
答案 2 :(得分:-1)
会话是全局变量。如果你想在课堂或功能中使用它。你需要通过传递会话变量作为函数参数来访问它。或者您需要使用全局命令。例如;
class XXX{
public function processSession($_SESSION){
return $_SESSION['xx'];
}
}
或者您可以使用全局指令
class XXX{
public function processSession(){
global $_SESSION;
return $_SESSION['xx'];
}
}
其他方式是在函数
中启动会话class XXX{
public function processSession(){
session_start();
$_SESSION['xx'] = 'aaaa';
return $_SESSION['xx'];
}
}
另外,你不能在函数或类函数中访问会话变量