0

この原因を尋ねる前に、こことグーグルで検索しましたが、よくある質問ですが、見つけた答えを試してみましたが、まだ失敗しています。

これは、Cookie を設定するための私の試みです (ヘルパーが自動ロードされることに注意してください)

$longlife = 60*60*24*60; //60 days
$shortlife = 60*60*24*10; //10 days
$this->input->set_cookie('AutoRemember', $user.'::'.$hashbrown, $shortlife, '.example.com', '/');
$this->input->set_cookie('LongRemember', $user.'::'.$hashbrown, $longlife, '.example.com', '/');

「$this->input->cookie()」で var_dump を実行しようとすると、出力として bool false が返されます。これは、Cookie が見つからなかったことを意味します。CIでCookieを使用しようとしたのはこれが初めてなので、現時点では問題は解決していません。

また、上記の例の実際のドメインを example.com に変更したことにも注意してください。ドメインが今すぐ検索に表示されないようにするためです。

4

4 に答える 4

2

__明確にするために 2013 年 10 月 3 日に編集__

わかりました、私は自分の問題が何であったかを理解しました。これは、今後の新規参入者にも役立つと確信しています. したがって、最初にapplication/config/config.php

次の行があります。

$config['cookie_prefix']    = "";

この設定はオプションですが、より多くの要件が判明したためです。常に再現できるとは限らないバグがあるように見えるため、何をなぜ追跡するのが難しい. 要するに、この構成項目が設定されていない場合です。Cookie の設定/取得中に、ごくまれに、内部で静かに壊れることがあります。機能していないときに機能しているという印象を与えます。

それがどれほどイライラするか想像してみてください。とにかく、元の問題に対する私の修正は、上記のプレフィックス行を設定することでした。何でもできます、コーダーの選択。

とにかく、それを設定するつもりの人は注目に値する. クッキーを設定するときは、ドキュメント/ガイドに従って通常どおり行います。

$this-input->set_cookie('myCookie');

ただし、ドキュメントで指定されていない(または最後にチェックしなかった)ことに気付いたのは、設定したプレフィックス

$config['cookie_prefix']    = "cmh_";//example

ドキュメントがそうすべきだと思うように呼び出すと、Cookieの値が取得されません。つまり、次のようになります。

$this->input->cookie('myCookie');

このように値を呼び出すと、画面に何も表示されない可能性が高くなります。var_dump()たとえば、あなたは得るでしょうbool(false)。つまり、参照している Cookie が見つからないということです。これは本当です。プレフィックスを設定したことを思い出してください。その時点でクッキーを取得するには、次のようなことをする必要があります

$this->input->cookie('cmh_myCookie');

これにより、Cookie の実際の値が出力されます。

于 2012-06-26T19:23:07.490 に答える
0

代わりに CodeIgniter のセッション クラスを使用することをお勧めします。

http://codeigniter.com/user_guide/libraries/sessions.html

于 2012-06-26T14:38:18.907 に答える
0

参考までに、「yoursite.com」などの別の名前のドメイン (HTTP_HOST) 内からドメイン「example.com」の Cookie を設定することはできません。これはセキュリティ上の問題であり、ブラウザは無視します。mozilla firebug 'NET' タブで応答ヘッダーを確認してください。Cookie が存在し、設定されていない場合は、正しいです。

次に、Cookie を設定すると、現在の $_COOKIE がまだ更新されていないため、次のリクエストでのみサーバー (php) で利用できるようになります。CI がこれを別の方法で実装した場合、これは概念の間違った実装です。

于 2012-06-26T10:47:49.030 に答える
-1

ドキュメントから:

This function is identical to the post function, only it fetches cookie data:
$this->input->cookie('some_data', TRUE);

これが示唆するように、取得するには Cookie の名前を追加する必要があります。出力してみる$this->input->cookie('AutoRemember')

于 2012-06-26T10:29:32.927 に答える