2012-01-30 70 views
0

我試圖設置,如果null一個cookie裏面構造,但我不能得到它的工作:不能設置cookie的CI中

public function __construct() 
{ 
    parent::__construct(); 
    if ($this->input->cookie('ff', TRUE) == FALSE) 
    { 
     $this->input->set_cookie('ff', 'on', 86500); 
     dump($this->input->cookie('ff', TRUE)); 
    } 
} 

我在做什麼錯?

編輯: dump()它只是一個自定義的調試功能。

+0

'dump()'做了什麼? Cookie在發送到瀏覽器之前需要設置,因爲它們在響應頭中。 http://php.net/manual/en/function.setcookie.php – Treffynnon 2012-01-30 19:37:39

+0

轉儲是一個自定義調試功能。那麼如何在codeigniter中正確設置cookie是否爲空? – Alex 2012-01-30 19:39:03

+0

您可以使用多種方式進行調試,而不會影響設置標題的能力。您可以將Firebug與FirePHP一起使用,使用'mail()'發送自己的輸出或寫入日誌文件或使用PHP輸出緩衝。此外,在這種情況下,您可以在設置cookie後將您的電話轉到'dump()'。 – Treffynnon 2012-01-30 19:42:14

回答

2

幾個原因你set_cookie通話可能會失敗:

1)您所輸出的東西已經在set_cookie被稱爲瀏覽器,在這種情況下,你可能會沿着「接頭連接線得到一個錯誤/通知已經發送」。要解決這個問題,只需確保在向瀏覽器發送任何內容之前調用set_cookie。

2)如果你正在做本地開發和測試,「localhost」的不被視爲一個有效的領域,所以沒有餅乾將被保存它。一種解決方法是在你的hosts文件中添加一個條目,例如:

localhost.dev 127.0.0.1 

然後進行測試,而不是「本地主機」與該域。