2

こんにちは、取得しようとした問題に夢中です。

そのようにindex.phpに設定されるCookieを削除できません:

$a = 'text';
setcookie('name_of_cookie', $a, time()+60*60*24*365);

page-php では、その Cookie を呼び出すことができ、コンテンツは $a のようになります。私はそのようにpage.phpでそのさまざまな方法を削除しようとしました:

setcookie('name_of_cookie', FALSE, time()-3600);

私はそれを次のように設定するだけのバージョンも見つけました:

setcookie('name_of_cookie');

ブラウザの設定で見たのと同じ名前の別のCookieを設定するだけです。その新しい Cookie にはコンテンツがありません - 確かに、宣言されたコンテンツはありません。

また、サーバーの場所のために過去により長い時間を設定しようとしましたが、これもうまくいきません。時間を設定しようとしても1機能しません。

名前のスペルを何度も確認しましたが、名前の違いによる失敗はありません。

誰かが私が間違っていることを教えてくれたらうれしいですか?

ありがとう。

4

3 に答える 3

6

クッキーを設定するときは、どのように設定するかを非常に具体的にしてください常にドメイン名($_SERVER['SERVER_NAME'] から取得できます)とパス(通常は "/" に設定) を設定します。一貫性がない場合、何かが「賢い」イニシアチブを取り、論理を破ることができます。これは、JS で Cookie を設定し、PHP から削除しようとした場合 (またはその逆) によく発生します。同じ名前でサブドメインまたはパスが異なる複数の Cookie がある場合があります。

たとえば、次のように Cookie を設定します。

setcookie( 'Foo', 'Bar', time() + 3600, '/', $_SERVER['SERVER_NAME'] );

そして、次のように設定を解除します。

setcookie( 'Foo', '', time() - 999999, '/', $_SERVER['SERVER_NAME'] );

最後の 2 つの引数が欠落していると、現在の状況に陥ります。

于 2013-03-05T12:27:20.703 に答える
1

以下のようにすべてのCookieを削除します。

if (isset($_SERVER['HTTP_COOKIE']))
{
    $cookies = explode(';', $_SERVER['HTTP_COOKIE']);
    foreach($cookies as $cookie) {
        $parts = explode('=', $cookie);
        $name = trim($parts[0]);
        setcookie($name, '', time()-1000);
        setcookie($name, '', time()-1000, '/');
    }
}
于 2013-03-05T12:26:12.043 に答える