[英]Codeigniter cookie won't set
由于某些原因,我无法通过简单的示例设置Cookie。 我在网上找到的每个示例也都失败了。 我想知道我是否想念一些东西。 一直说“ 未设置Cookie ”
我设置cookie,并另一种方法* get_language()*通过点击链接,但仍然没有运气读它之后添加刷新 。
提前致谢
视图
<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);
}
}
}
重新加载页面之前,您将无法查看/使用Cookie。 这意味着您需要在set_cookie($ cookie)之后的某个地方实现页面刷新。 在获得状态之前。
另一件事,你可能想改变
'domain' => 'language.com'
至
'domain' => '.language.com'
以确保您的Cookie可通过http://www.language.com,http : //language.com和其他子域访问。
首先做一个简单的检查;
如果domain不是https,并且在config.php中将cookie_secure设置为TRUE,则不会设置cookie。 更改为FALSE,它将同时在http和https中设置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.