如何在不同的编码方法中访问会话


How to access session in different method of codeigniter?

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

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

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

1号功能:

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

我不能在第二个方法中访问它吗?请指导. .谢谢大家

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

例如

:

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

希望对你有帮助。

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

希望有所帮助