0

私の質問は: セッション Cookie はサイト上のパスによって制限されていますか? つまり、Cookie が mysite.net/rodents/gerbil/ に設定されている場合、それはmysite.net/rodents/hamsterなどの別のパスには適用されませんか?

コンテキストは次のとおりです。

http://sonet.nottingham.ac.uk/rlos/placs/users_carers/homeで簡単なサイトを開発しました。このサイトでは、ユーザーがページ。デフォルトでは自動起動はオフになっていますが、ユーザーが上部のオーディオ プレーヤーの横にあるチェックボックスをオンにして別のページに移動すると、PHP (CodeIgniter) でCookieautoplayが設定されon、プレーヤーのautostartパラメーターが に設定されます。true

Firebug によると、これはサイト セクション (例: ホーム) では正常に機能しますが、ユーザーが別のセクション (例: 次のステップ) に移動すると、Cookie は消えます。したがって、ホームのチェックボックスをオンにすると、FB は Cookie を報告します。

  • 名前: 自動再生
  • 値: オン
  • ドメイン: sonet.nottingham.ac.uk
  • サイズ: 10 B
  • パス: /rlos/places/users_carers/
  • 期限切れ: セッション

ホームの別のページに移動すると、Cookie が残ります。[次のステップ]に移動するとCookie は消えますが、チェックボックスをオンにすると、FB は Cookie が設定されていると報告しますが、パスは「/rlos/placs/users_carers/steps/」です。興味深いことに、セクションを切り替えてボックスをチェックすると、パスごとに Cookie が生成されます。

私は今まで自分のサイトで Cookie をあまり使用しておらず、PHP セッション変数を好んでいましたが、セッション Cookie の設定は簡単で、jQuery を使用してクライアント側で Cookie を設定したいと思っていたので退屈しないと思っていました。永続的な Cookie を設定することでこの問題を解決できますが、a) ユーザーのマシンに Cookie を残したくありません。また、b) フリップがどうなっているのかを知りたいです。

これについて私が最善の方法を講じていない可能性がありますが、このプロジェクトは火曜日までに終了する必要があるため、アプローチをやり直すことはできません.

4

1 に答える 1

0

それがsession.cookie_pathディレクティブによって決定されます。

session.cookie_path string
session.cookie_pathは、セッション Cookie に設定するパスを指定します。デフォルトは / です。session_get_cookie_params()および session_set_cookie_params ()も参照してください。

ただし、Cookie が呼び出されautoplay、値がonであるため、セッション Cookie ではありませんPHPSESSID(デフォルトで呼び出され、長いランダム文字列が含まれます)。通常の Cookie はset_cookie()で作成されます。

bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )

... どこ:

path
Cookie が使用可能になるサーバー上のパス。「/」に設定すると、Cookie はドメイン全体で使用可能になります。「/foo/」に設定すると、Cookie は /foo/ ディレクトリと、ドメインの /foo/bar/ などのすべてのサブディレクトリ内でのみ利用可能になります。デフォルト値は、Cookie が設定されている現在のディレクトリです

要約すると、パスを明示的に設定する必要があります。

編集: jQueryタグに気づきませんでした。プラグイン ドキュメントの引用:

サイト全体で有効な期限切れの Cookie を作成します。

$.cookie('the_cookie', 'the_value', { expires: 7, path: '/' });

于 2013-01-04T10:19:53.500 に答える