2011-08-16 38 views
0

我是codeigniter的新手。 如何使用会话对象将值从一种方法传递给控制器​​中的另一种方法?如何使用不同的codeigniter方法访问会话?

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

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

1功能:

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

第2个功能:

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

Ÿ我不是能够访问它在第二个方法呢?请指导..非常感谢

+0

您的代码似乎很好。您是否检查过您正在使用的机器上是否启用了Cookie? – Sukumar

+0

雅我想..在我的config.php中,我有以下条目.. $ config ['sess_cookie_name'] \t \t ='ci_session'; $ config ['sess_expiration'] \t \t = 7200; $ config ['sess_expire_on_close'] \t = FALSE; $ config ['sess_encrypt_cookie'] \t = FALSE; $ config ['sess_use_database'] \t = FALSE; $ config ['sess_table_name'] \t \t ='ci_sessions'; $ config ['sess_match_ip'] \t \t = FALSE; $ config ['sess_match_useragent'] \t = TRUE; $ config ['sess_time_to_update'] \t = 300; – radhika

+0

这些是默认值,它们也很好。尝试使用类似萤火虫的东西来检查cookies是否真的被设定。 – Sukumar

回答

1

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

例如:

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

希望帮助你。

0

使用CI 1.7.x,我在我的webapp中发现了一个错误,它刚刚停止读取我的session_data。我所做的改正是将config.php中的$ config ['sess_encrypt_cookie']更改为TRUE;并且它再次开始工作。当然,在日志文件中,Cookie损坏错误不断弹出...

希望它有帮助

相关问题