【问题标题】:SESSION missing from view视图中缺少 SESSION
【发布时间】:2012-03-12 06:23:31
【问题描述】:

根据上面的标题,当我使用超链接触发控制器时,它会运行控制器功能,但在从控制器重定向后我无法获得 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 值。

【问题讨论】:

  • 这是一个难得的机会,但您是否通过将会话库的信息放入 config.php 中启用了您的 codeigniter 中的会话库?其次,我不建议您使用 codeigniter 会话,因为它将所有数据存储在 cookie 中,可以使用 javascript 公开查看(如果未启用 mcrypt)。如果这些 cookie 像复制到其他浏览器一样复制到其他浏览器,那么这些相同的会话也可以从其他浏览器或计算机上运行。

标签: php codeigniter


【解决方案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'];

【讨论】:

  • 还是不行,兄弟,还有什么方法可以叫出会话吗?
  • @KYSH,这两种方法都可以完美运行。检查更新并再次检查您的代码。如果您仍然无法运行它,请在您的问题上发布代码。
  • 好的,它现在可以工作了 Starx,感谢您的帮助,这是我的错,我应该在重定向之前先设置它,检测到错误!
  • @Starx:“你不能像那样访问会话变量”是不正确的。 $this 在视图中工作得非常好,它仍然在当前控制器/方法的上下文中。
  • @Madmartiganm ,我不确定。无论如何,我刚刚发现另一个问题正是same
【解决方案2】:

不应该是这样的:

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"); ?>

【讨论】:

    【解决方案3】:

    会话是全局变量。如果你想在类或函数中使用它。您需要通过将会话变量作为函数参数传递来访问它。或者您需要使用全局命令。比如;

    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'];
       }
    }
    

    否则,您无法访问函数或类函数中的会话变量

    【讨论】:

    • 他在询问使用 codeigniter 框架的会话处理!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多