1

私はcodeigniterを使用しており、このようなすべてのルートを持っています

 www.example.com/path1/
 www.example.com/path1/path_/

SESSION['lang'] が設定されている場合、すべてのページでコントロールを行います。設定されている場合は、Cookie も設定します

setcookie("lang", $_SESSION["LANG"], time() + (60* 60 * 24 * 30 *12 *20),  "./"); 

しかし、問題があります... 管理領域からログアウトするときは、セッションと Cookie を削除する必要があります。しかし、この方法でCookieを削除すると

setcookie("lang",'', time() - (60* 60 * 24 * 30 *12 *20),  "./"); 

Cookie lang を 1 つだけ削除します。別のパスのすべての Cookie「lang」を削除する必要があります。

誰かが私を助けることができますか?!

4

3 に答える 3

0

Codeigniter には Cookie を削除するメソッドがあります

delete_cookie()

Cookie を削除できます。カスタム パスまたはその他の値を設定していない限り、必要なのは Cookie の名前だけです。

delete_cookie("name");

この関数は、それ以外の点では set_cookie() と同じですが、値と有効期限のパラメーターがない点が異なります。最初のパラメーターで値の配列を送信するか、個別のパラメーターを設定できます。

delete_cookie($name, $domain, $path, $prefix)

この機能を使用すると、任意のパスまたはドメインの Cookie を削除できます。おそらく、この関数を「ドメイン/パス」の数だけ何度も記述する必要があります。

http://ellislab.com/codeigniter/user-guide/helpers/cookie_helper.html

于 2013-02-25T18:02:44.937 に答える
0

Cookie の設定に使用する方法では、アクセスするページ/URL ごとに個別の Cookie が保存されます。その理由は次のとおりです。

setcookie(..., ..., ..., "./"); // the 4th parameter means "this directory"

したがって、スクリプトがすべてのページで実行されると、アクセスするすべてのディレクトリとサブディレクトリが個別の Cookie を取得します。ただし、ドメイン全体に「lang」パラメーターを設定する場合は、これは必要ありません。

「/foo/」のようなものに変更すると、この Cookie はすべてのhttp://www.example.com/foo/および www.example.com/foo/ のすべてのサブディレクトリに対して有効になります。http://を参照してください。 php.net/manual/en/function.setcookie.php :

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

これはドメイン全体に対して 1 つの Cookie のみを保存するため、4 番目のパラメーターを変更したコードを使用して簡単に無効にすることができます。

setcookie(..., ..., ...,  "/foo/"); 

これが役立つことを願っています。

于 2013-02-25T18:05:33.667 に答える