ホームページ >バックエンド開発 >PHPの問題 >PHPのCookieをクリアする方法

PHPのCookieをクリアする方法

藏色散人
藏色散人オリジナル
2020-11-24 10:02:322147ブラウズ

PHP Cookie をクリアする方法: 最初に PHP サンプル ファイルを作成し、次に setcookie を通じて Cookie を作成し、最後に「setcookie('test','',time()-3600);」を通じて作成された Cookie をクリアします。方法は以上です。

PHPのCookieをクリアする方法

推奨:「PHP ビデオ チュートリアル
このチュートリアルの動作環境: Windows 7 システム、PHP バージョン 5.6、これこの方法は、すべてのブランドのコンピューターに適用できます。

PHP は COOKIE をクリアしますが、PHP は COOKIE を削除できません?

COOKIE の有効期間、COOKIE の有効期限を設定します

PHP マニュアルに記載:

PHP は HTTP Cookie を透過的にサポートします。 Cookie は、ユーザーを追跡および識別するためにリモート ブラウザーにデータを保存するメカニズムです。 Cookie は、setcookie() 関数または setrawcookie() 関数を使用して設定できます。 Cookie は HTTP ヘッダーの一部であるため、header() 関数の制限と同様に、他の情報がブラウザに出力される前に setcookie() 関数を呼び出す必要があります。

setcookie():
bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure]]]]] )

Cookie を削除するには、ブラウザの削除メカニズムをトリガーするために、Cookie の有効期限が過去であることを確認する必要があります。

Cookie を削除する方法は、Cookie の有効期間を現在時刻より前に設定することです。これは、ほとんどすべての PHP プログラマーが行っていることです。

例:

setcookie('test','true',time()+3600); //创建cookie
setcookie('test','',time()-3600);   //清除建立的cookie

================================== ==== ============================================= =

setcookie("test", '');

print_r($_COOKIE);

結果は、$_COOKIE['testcookie'] だけでなく、$_COOKIE 配列全体が空になります。 Winsock を使用してパッケージをキャプチャし、返された http ヘッダーを観察し、http ヘッダーが実際には

Set-Cookie: testcookie=deleted; expires=Mon, 18-Jun-2007 02:42:33 GMT

であることを確認します。これは、setcookie("testcookie", ''); が実際に testcookie Cookie を直接削除していることを示しています。 , in php マニュアルには全く説明がありません。

やっとphpのソースコードを読んで真相が分かりました(これはオープンソースの利点です、不明な裏話がある場合は直接確認してください)ソース コード)

次のコードは php5 で使用できます。20 Linux ソース コード パッケージの ext/standard/head.c の行 99 付近にあります。

if (value && value_len == 0) {
time_t t = time(NULL) - 31536001;
dt = php_format_date("D, d-M-Y H:i:s T", sizeof("D, d-M-Y H:i:s T")-1, t, 0 TSRMLS_CC);
sprintf(cookie, "Set-Cookie: %s=deleted; expires=%s", name, dt);
efree(dt);
} else {
sprintf(cookie, "Set-Cookie: %s=%s", name, value ? encoded_value : "");
if (expires > 0) {
strcat(cookie, "; expires=");
dt = php_format_date("D, d-M-Y H:i:s T", sizeof("D, d-M-Y H:i:s T")-1, expires, 0 TSRMLS_CC);
strcat(cookie, dt);
efree(dt);
}
}

で明確に表示されます。ソース コード、if (value && value_len == 0)、value_len が 0 の場合

sprintf(cookie, "Set-Cookie: %s=deleted; expires=%s", name, dt);

はブラウザに cookie を削除するための http ヘッダーを送信します。

最後に、php で

setcookie($cookiename, '');或者 setcookie($cookiename, NULL);

を使用すると cookie が削除されると結論付けることができます。もちろん、これらのマニュアルには記載されていません。

=========================================== == =========================================

php Cookie の有効期限が切れたら削除/パージできませんか?

今日、Web サイトへのログインに Cookie を使用しました。デバッグ後、

 setcookie("username", "username", time()+1000,"/php100/");

を使用してユーザーのログイン情報を保存し、

setcookie("username", "", time()-3600);

を使用してログアウトしました。 IE でテストしたところ、問題なく動作しました。 Web サイトを構築するのですから、できるだけ多くのブラウザと互換性を持たせる必要があります (笑)。そこで Firefox でテストしたところ、ログイン時はすべて問題なく動作しました。しかし、起動すると問題が発生しました。ログアウトする方法はなく、ユーザーは常にログインしたままになります。そこで IE と Firefox の Cookie レコードの違いを確認してみたのですが、試してみてふと気づきました。

setcookie() の 4 番目のパラメーター (正当なパス パラメーター) が指定されていない場合、デフォルトで現在のディレクトリが正当なパスとして使用されることが判明しました。テストしたパスは http:/ です。 /127.0.0.1/php/ rss2fla/data /log.php なので、ログイン時とログアウト時に設定される Cookie のパスが異なります。

IE は Firefox よりも使いやすいです。はは、パスを指定すると、現在の IP の下で同じ名前の Cookie 変数が上書きされます。ただし、FireFox はより厳密で、新しい変数が作成されます。 ..

以上がPHPのCookieをクリアする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。