2012-10-26 74 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