2011-08-16 72 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損壞錯誤不斷彈出...

希望它有幫助

相關問題