0

何らかの理由で、簡単な例で Cookie を設定できません。私がウェブで見つけたすべての例も失敗しました。ちょっと寂しいかな。「Cookieが設定されていません」と言い続けます

Cookie を設定した後にREFRESHを追加し、別のメソッド *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);
        }   
    }

}

4

2 に答える 2

0

ページをリロードする前に、Cookie を表示/使用することはできません。つまり、set_cookie($cookie); の後にどこかにページの更新を実装する必要があります。状態になる前に。

別のこと、あなたは変えたいかもしれません

'domain'    => 'language.com'

'domain'    => '.language.com'

http://www.language.comhttp://language.com、およびその他のサブドメインでCookie にアクセスできるようにします。

于 2012-10-26T10:46:42.477 に答える