2016-05-20 133 views
0

這是正常的,$this->session->set_userdata()返回null?我的控制器是這樣的。Codeigniter:Set_uderdata returns NULL

function set_supplier() { 

    //UNSET THE OLD DATA 
    if($this->session->userdata('supplier_data')) { 
     $this->session->unset_userdata('supplier_data'); 
    } 

    $supplier_id = $this->encrypt->decode($this->input->post('supplier')); 

    $sess_array = array();   
    $sess_array = array(
      'id' => $supplier_id     
    ); 

    $process = $this->session->set_userdata('supplier_data', $sess_array); 

    if($process) { 
      //SUCCESS 
      $this->session->set_flashdata('success', 'You have set the supplier!'); 
      redirect($_SERVER['HTTP_REFERER'], 'refresh'); 
     } else { 
      //ERROR 
      $this->session->set_flashdata('error', 'Oops! An Error has Occured!'); 
      redirect($_SERVER['HTTP_REFERER'], 'refresh');    
    } 

} 

我只是簡單地添加var_dump($process);,以顯示這是怎麼回事,它是顯示NULL

我希望發生的是返回的消息時$process是真實的。

回答

-1

你試過嗎? 如果設置了用戶數據,則直接設置條件。

如果($這個 - >會話級> set_userdata( 'supplier_data',$ sess_array))

0

$this->session->set_userdata('data_here');不返回成功或失敗,一個布爾值。

要驗證用戶數據是否已設置,請使用$this->session->has_userdata('some_name');

更多信息can be found in the docs

0

這不會起作用,因爲set_userdata不返回任何結果。 看看在code of function

public function set_userdata($data, $value = NULL) 
{ 
    if (is_array($data)) 
    { 
     foreach ($data as $key => &$value) 
     { 
      $_SESSION[$key] = $value; 
     } 
     return; 
    } 
    $_SESSION[$data] = $value; 
} 

正如你可以清楚地看到,該函數不返回任何值。

0
function set_supplier() { 

    //UNSET THE OLD DATA 
    if($this->session->userdata('supplier_data')) { 
     $this->session->unset_userdata('supplier_data'); 
    } 

    $supplier_id = $this->encrypt->decode($this->input->post('supplier')); 

    $sess_array = array();   
    $sess_array = array(
      'id' => $supplier_id     
    ); 

    $this->session->set_userdata('supplier_data', $sess_array); 

    if($this->session->userdata('supplier_data')) { 
      //SUCCESS 
      $this->session->set_flashdata('success', 'You have set the supplier!'); 
      redirect($_SERVER['HTTP_REFERER'], 'refresh'); 
    } else { 
      //ERROR 
      $this->session->set_flashdata('error', 'Oops! An Error has Occured!'); 
      redirect($_SERVER['HTTP_REFERER'], 'refresh');    
    } 

} 
0

或許你忘了,包括

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

在你的控制器所需的會話庫。

0
$this->session->set_userdata() 

函數無返回值。它用於存儲會話值。如果你想獲得會話價值,那麼使用這個功能$this->session->userdata('session_name');我已經改變你的腳本,請現在檢查...

function set_supplier() { 

//UNSET THE OLD DATA 
if($this->session->userdata('supplier_data')) { 
    $this->session->unset_userdata('supplier_data'); 
} 

$supplier_id = $this->encrypt->decode($this->input->post('supplier')); 

$sess_array = array();   
$sess_array = array(
     'id' => $supplier_id     
); 

$this->session->set_userdata('supplier_data', $sess_array); 

$process = $this->session->userdata('supplier_data'); 

if($process) { 
     //SUCCESS 
     $this->session->set_flashdata('success', 'You have set the supplier!'); 
     redirect($_SERVER['HTTP_REFERER'], 'refresh'); 
    } else { 
     //ERROR 
     $this->session->set_flashdata('error', 'Oops! An Error has Occured!'); 
     redirect($_SERVER['HTTP_REFERER'], 'refresh');    
    } 
}