2017-03-16 104 views
2

我正在使用PHP和codeigniter。我試圖在會話中設置一個變量。codeigniter中的會話值

控制器

defined('BASEPATH') OR exit('No direct script access allowed'); 

class Welcome extends CI_Controller { 

public function __construct(){ 

     parent::__construct(); 
     $this->config->base_url(); 
     $this->load->library('session'); 

     if(!$this->session->has_userdata('zoo')) 
     { 

     $fooBar = md5(uniqid(rand(), TRUE));//generates random number 
     $newdata = array(
        'username' => 'nirali', 
        'zoo' => $fooBar 
      ); 
     $this->session->set_userdata($newdata);  
     exit; 
     } 
} 

public function read_session(){  

     $array = $this->session->all_userdata(); 
     print_r($array); 
     exit; 
} 

} 

在第一次請求構造的setter方法會被執行並且它填補會話變量。並因退出而停止執行;聲明。

當我打電話read_session()它打印

Array ([__ci_last_regenerate] => 1489646422 [username] => nirali [zoo] => 531d8bfb21ed21b83bc7e3763a04f88c) 

,當我回憶起read_session()它打印

Array ([__ci_last_regenerate] => 1489647898 [username] => nirali [zoo] => cb675bee85da672c95166dbc1dbbdfd2) 

我得到預計的用戶名來nirali價值 - 所有的好 但對於動物園我總是得到不同的價值,我期待同一屆會議相同的價值


更新

在進一步的調試,我發現。服務器沒有迴應任何cookie作爲迴應。

enter image description here

出了什麼問題,其中不發送任何會話cookie迴響應服務器配置?

+0

嘗試$ foobar的= MD5(uniqid(RAND(),TRUE));從if語句中獲取此行。 –

+0

@ Shahid如何幫助?是不是它只是在每次請求時調用它(與OP設置時相反)? –

+0

@JigarJoshi不確定。這就是爲什麼我在評論中提出建議並沒有發佈答案 –

回答

1

試試這個:

if(! $this->session->userdata('zoo')) 
{ 
    $fooBar = md5(uniqid(rand(), TRUE));//generates random number 
    $newdata = array(
       'username' => 'nirali', 
       'zoo' => $fooBar 
    ); 
    $this->session->set_userdata($newdata); 
}