2012-10-26 122 views
0

出於某種原因,我無法用一個簡單的示例設置cookie。我在網上找到的每個例子都失敗了。我想知道我是否想念一些小東西。一直說「的Cookie沒有設置Codeigniter Cookie不會設置

我加REFRESH設置cookie,並另一種方法後* get_language()*通過點擊鏈接,但仍然沒有運氣讀它。

在此先感謝

VIEW

<p> 
    <a href="<?php echo site_url('welcome/set_language/english'); ?>">English</a> 
    <br /> 
    <a href="<?php echo site_url('welcome/set_language/spanish'); ?>">Spanish</a> 
    </p> 

    <br /> 
    <p><a href="<?php echo site_url('welcome/get_language'); ?>">Get Language</a></p> 

控制器

class Welcome extends CI_Controller 
{ 
    var $cookie_name = 'language'; 

    public function __construct() 
    { 
     parent::__construct(); 

     $this->load->helper('url'); 
     $this->load->helper('cookie'); 
    } 

    public function index() 
    { 
     $this->load->view('welcome_message'); 
    } 

    public function set_language() 
    { 
     if($this->uri->segment(3) != false) 
     { 
      $cookie = array(
          'name'  => $this->cookie_name, 
          'value'  => $this->uri->segment(3), 
          'expire' => '86500', 
          'domain' => '.language.com', 
          'secure' => true 
          ); 

      set_cookie($cookie); 

      redirect(null, 'refresh'); 
     } 
    } 

    public function get_language() 
    { 
     if (! get_cookie($this->cookie_name)) 
     { 
      echo 'Cookie not set'; 
     } 
     else 
     { 
      echo get_cookie($this->cookie_name); 
     } 
    } 

}

回答

0

您將無法看到/ RELO之前使用cookie添加頁面。這意味着你需要在set_cookie($ cookie)之後的某個地方實現頁面刷新;在你得到它的狀態之前。

另一件事,你可能想改變

'domain' => 'language.com' 

'domain' => '.language.com' 

,以確保您的Cookie是accessable withing的http://www.language.comhttp://language.com和其他子域。

+0

我更新了代碼並在設置cookie後添加了刷新,但仍然沒有運氣。 – BentCoder

+0

您是否預加載cookie助手? - $ this-> load-> helper('cookie');另外,請嘗試按照以下示例所示傳遞路徑:http://codeigniter.com/user_guide/libraries/input.html(向下滾動到$ this-> input-> set_cookie()) – Aidas