私はphpのマニュアルとインターネットでcookieを削除する方法を検索してみました。
setcookie("name", '', 1);
または
setcookie("name", '', time()-3600);
しかし、FirefoxのCookieダイアログでCookieを確認しても、同じ値が残っています。次の行を使用して、このCookieを設定しました。
setcookie("name", $value, time() + 259200, $path);
私は this の質問をstackoverflow:で見つけましたが、どの回答も問題を解決しませんでした。著者が言ったように、私もすべてのパラメータを入れてみましたが、効果はありませんでした。
誰かが問題を見ていますか?
マニュアルの状態 :
Cookieは、設定時と同じパラメーターで削除する必要があります。 value引数が空の文字列または
FALSE
で、他のすべての引数が以前のsetcookieの呼び出しと一致する場合、指定した名前のCookieがリモートクライアントから削除されます。これは、値を「削除済み」に設定し、有効期限を過去1年に設定することにより、内部的に実現されます。
したがって、$path
は正しく指定されています-それを削除する場合も同様です。たとえば、Cookieがサブディレクトリで指定されている場合、親ディレクトリまたは子ディレクトリ(あるいはその両方)から削除できない場合があります。
権限がどのように機能するかは完全にはわかりませんが、Web開発者ツールバーを使用して、削除しようとしているCookieのpathが何であるかを表示することができます。
わかりませんが、今はうまくいきます。マジックコードは次のとおりです。
setcookie("name", '', 1, $path);
私はすでにそれを試したことはありませんか?何であれ、今はうまくいきます。皆さん、助けてくれてありがとう!
誰も言及していないことに驚いています(または私が見逃したかもしれません)が、ドメインも重要です! sub-domain.example.comを使用していて、Cookieが.example.comからのものである場合、ドメインパラメータを明示的に設定する必要があります。そうしないと、現在のドメインが想定され、機能しません。
setcookie('cookiename', FALSE, -1, '/', '.example.com');
サブドメイン値は、親ドメインからCookieをクリアしません。
特定のパスのdelete Cookieで、pathパラメータが末尾のスラッシュ '/'で終わっている場合、FirefoxとIEで機能します。 ChromeおよびOperaでは機能しません。末尾にスラッシュがない場合、ChromeおよびOperaでのみ機能します。
したがって、両方を使用する必要があります。
setcookie('cookiename', '', time() - 60*60*24, $chatPath); // WebKit
setcookie('cookiename', '', time() - 60*60*24, $chatPath . '/'); // Gecko, IE
使ってみた
setcookie("name", "", -1);
そして、Apache/PHP5を搭載した私のサーバーでは、Cookieをクリアしました(少なくともvar_dump($ _ COOKIE)は空の配列を示しました)。
スクリプトがすでにそのHTTPヘッダーを送信しているかどうかを確認しましたか?
if (headers_sent()) {
trigger_error("Cant change cookies", E_USER_NOTICE);
}
cookieを設定
setcookie( 'cookiename'、$ cookie_value、time()+(86400 * 30)、 "/"); // 86400 = 1日
クッキーの設定を解除
setcookie( 'cookiename'、 ''、time()-3600、 "/");
パニックする必要はありません。 Cookieの設定に使用する関数をコピーするだけで、時間を短縮できます。混乱しないでください。簡単かつ明確にしてください。
これは私のためのトリックをしました:
setcookie("brownie","",1,'/');
unset($_COOKIE["brownie"]);
同様の問題がありました。
何らかの理由で、logout.phpから何かをエコーすると、実際にCookieが削除されることがわかりました。
echo '{}';
setcookie('username', '', time()-3600, '/');
Cookieを削除/使用しようとしているのとは異なるパスに保存したことがあります。
例えばに入る。 Chrome Cookie設定とCookieパスを確認し、パスをsetcookieコマンドに追加して、次のように削除します。
setcookie( "my_cookie_name","",1,'/mypath');
間違ったパスに保存されているCookieを削除または設定解除しようとしても機能せず、非常にイライラすることがあります。
正解で述べたように(更新されたものを送信してください)、設定を解除するには、Cookieを設定するために使用されるすべてのパラメーターが必要ですsecureおよびhttponly
セットする
setcookie("name_cookie", $name_value, 0, '/', $domain, false, true);
未設定
setcookie("name_cookie", '', time()-1000, '/', $domain, false, true);
私は使用することをお勧めします
ob_start();
最初のl
時間を小さい値に設定し、Cookieの値を使用してみましたか?
setcookie("name", 'n', 1);
Global.phpのようなグローバルコア関数ファイルでカスタム関数を定義するだけです
function delete_cookie()
{
unset($_COOKIE['cookiename']);
setcookie('cookiename',NULL,time()-3600, '/');
return true;
}
のようにHTMLコードの上部でこの関数を使用します
include('global.php')
if(isset($_GET['delete_cookie']))
{
delete_cookie(); //if you want to pass the parameters into the function also possible like delete_cookie(param1);
}
私にも10回に1回は発生します。私たちがコーディングする方法の問題だと思います。
これは私のコードです
setcookie("token", "", time() - 36000, "/");