2009-08-12 6 views
13

Webブラウザに完全に指示する方法はありますか自分のCookieがPHPで設定されていますか?ブラウザからCookieを削除しますか?

満了私はそれを待つか、ブラウザがを閉じてになるのを待ちます。

削除すると、実際にはクッキーのリストの中にリストされなくなります。

+0

クッキーの値を空の文字列に設定するか、または有効期限を過去の日付に設定するか、httpsから '$ cookie-> delete();'を使用して、 ://github.com/delight-im/PHP-Cookie – caw

答えて

9

を参照してください - クッキーに関するブラウザとウェブサーバとの間の契約を適格な要求でデータが提示されることです。

「クッキーが期限切れになるのを待ってはいけない」と述べていますが、クッキーの有効期限はデータがもはや必要ではなく、将来のリクエストでは提示しないことを示す正しい方法ですケースはファイルを削除するブラウザに変換されます。

したがって、クッキーを削除するには、有効期限を過去に設定します。 PHPでは、これはsetcookie()で行われます。

+0

これは答えの中で最も近いものでした(パラグラフ#1)。どうも。 –

5

はい。 setcookie()を使用して、削除するクッキーの有効期限を過去の時間に設定します。その結果、ユーザーのブラウザは自動的にブラウザを削除する必要があります。

-1

私はこのプラグインを書き、正しく動作します。

(function($) { 
    $.cookieAllDelete = function(doc) 
    { 
     var cookie_date = new Date(); 
     var cookies = null; 

     cookies = doc.cookie.split(';'); 
     cookie_date.setTime(cookie_date.getTime() - 1); 

     for(var i=0; i < cookies.length; i++) 
     { 
      var cookie_name = cookies[i].split('=')[0]; 
      try { 
       if (cookie_name.length > 0) 
        doc.cookie = cookie_name += "=; expires=" + cookie_date.toGMTString(); 
      } catch(ex) {} 
     } 
    } 
})(jQuery); 

jQuery.cookieAllDelete(document); 
+3

JavaScriptをオフにしてもうまくいくのですか? :-) – ceejayoz

+0

申し訳ありませんが、私もタグjQueryを探していて、私は混乱しています。ありがとうございました –

+1

私からのものではありませんでした。 – ceejayoz

19

すべてのCookieを削除するには、このような何かを試してみてください:

foreach ($_COOKIE as $name => $value) { 
    setcookie($name, '', 1); 
} 

1値を失効し、それがUnixの時間エポックの開始後1秒を表しています。だから、それはすでに満了しています。

+0

誰かが、期限切れと関係があるすべての回答を下降させました。なぜなら、質問は期限切れにしたくないと言っていたからです。 –

+17

@ Chacha102:さて、誰かがクッキーがどのように動作するかは分かりません。 – Gumbo

+0

@Gumboまた、この答えを即座に「deleteAllCookies」という関数でラップして、誰かのためにそれを偽造することができます。 :P – choz

1

私はあなたを組み合わせたアプローチを使用する必要があることを考える:バック過去に

  • セットの有効期限の道(Chacha102により示唆されるように)
  • 使用により示唆されるようにdocument.cookie DOMオブジェクト(からエントリを削除JavaScripttoアンドレスのdescalzo)

は、混合アプローチと一緒に行くための2つの理由があります:

  • ブラウザでJavaScriptを無効にすることができます。
  • document.cookieにすべてのCookieが表示されているわけではありません。現代のブラウザの中には、Cookieのhttponlyフラグをサポートしているものがあります。 PHPは、HTTPのみクッキーをサポートしている、あなたはそのようなファイルが実際にあります保証することはできませんので、あなたは、任意のクッキーに関連するファイルを削除するには、ブラウザを強制することはできませんhttp://www.php.net/setcookie
3

'クッキーの削除は見た目よりも難しいと思われます。

setcookie($name, '', 1); 

トリックはしません。 ''は空であり、setcookieは命令全体を無視できます。また、過去に時間を設定

は時々クッキーは、その時間が期限切れに私は今、この権利を取り扱っております。1.

よりも新しい値を保持することができます。私はそれがどこから来るのか分からないが、そこにある。

私はこれはクッキーがfalseに解決値に設定し、それが以前の値よりも新しいことが保証されます

setcookie($name, '0', 9000000000); 

に頼ってきました。

誰かがこの動作に関する洞察を持っている場合は、教えてください。

setcookieのドメインとパスの値は、値が指定されていないときに実行から実行まで同じであることが保証されていると考えられます。

このようなクッキーが2038年に期限切れになることはありません。

また、Cookieの最新の有効期限がわかっている場合は、1秒後に設定する必要があります。

+0

私の場合、setcookieが動作しなかった理由は、4番目のパラメータに同じ場所を使用しなかったためです。クッキーを正常に削除するには、4番目のパラメータと同じ場所を使用してください。 – Antony

+1

クッキーの設定と削除に同じパラメータを設定する必要があることがわかりました。クッキーを設定する:setcookie($ name、$ uid '、$ time、'/'、' '、0); - クッキーを削除する:setcookie($ name、$ uid '、1、'/'、' .domain.name '、0); 5番目のパラメータは両方で同じでなければなりません。 – Grant

+0

$ _COOKIE配列を出力し、pertularキーを解除します。unset($ _ COOKIE [$ name]); – ShivarajRH

関連する問題