如何使用不同的codeigniter方法访问会话?

时间:2011-08-16 06:22:38

标签: php session codeigniter

我是codeigniter的新手。 如何使用会话对象将值从一个方法传递到控制器中的另一个方法?

我已经在构造函数类中加载了库:

$this->load->library('session');

第一个功能:

public function display()
{
$data = array(
'word' => 'hello'
);
$this->session->set_userdata($data);
}

第二功能:

public function validate()
{
$word_generated = $this->session->userdata('word');
}

但是我无法在第二种方法中访问会话值。

如果我以相同的方法访问会话,代码工作正常:

public function display()
{
$data = array(
'word' => 'hello'
);
$this->session->set_userdata($data);
$word_generated = $this->session->userdata('word');
}

我在第二种方法中无法访问它吗?请指导..非常感谢

2 个答案:

答案 0 :(得分:2)

为了从方法(或页面到页面)访问会话数据,您应该进行重定向。

例如:

public function display() {
    $data = array(
        'word' => 'hello'
    );
    $this->session->set_userdata($data);
    redirect('your_controller/validate');
 }

 public function validate() {
     $word_generated = $this->session->userdata('word');
 }

如果您只是尝试在同一个呼叫中的同一控制器中使用两种方法共享变量,则有两种选择:

<强> 1。为您的控制器类设置公共属性:

class Your_controller extends CI_Controller {
    public $word;
    public function display() {
       $this->word = 'hello';
       $this->validate();
    }

    public function validate() {
       $word_generated = $this->word;
    }
}

<强> 2。只需将变量正常传递给方法:

class Your_controller extends CI_Controller {
    public $word;
    public function display() {
       $this->validate('hello');
    }

    public function validate($word='') {
       $word_generated = $word;
    }
}

希望对你有所帮助。

答案 1 :(得分:0)

使用CI 1.7.x,我在我的webapp中发现了一个错误,它刚刚停止读取我的session_data。我所做的是纠正这个问题,将config.php中的$ config ['sess_encrypt_cookie']更改为TRUE;它又开始工作了。当然,在日志文件中,cookie腐败错误一直在弹出......

希望有所帮助