-1

Cookieを使用すると、アプリケーションで少量のテキストデータ(通常は4〜6kB)をWebクライアントに保存できます。Cookieにはさまざまな用途がありますが、最も一般的な用途はセッション状態の維持です。Cookieは通常、サーバーが応答ヘッダーを使用して設定し、その後クライアントが要求ヘッダーとして使用できるようにします。

これはzce学習ガイドからのものです。

私の質問は

1. how a session state is maintained by cookie?
2. what happens to these cookies when we use session_destroy()?
4

2 に答える 2

1

簡単に言うと、セッションCookieは、特定のサイトをナビゲートするときにリモートセッションをブラウザに関連付けます。PHPSESSID=3432DFGDFG43523これには、通常、リモートサーバーが管理しているセッションとして識別する行に沿った文字列が含まれています。

PHP Webサイトから:

Webサイトにアクセスする訪問者には、一意のID、いわゆるセッションIDが割り当てられます。これは、ユーザー側のCookieに保存されるか、URLで伝播されます。

セッションサポートにより、リクエスト間のデータを$_SESSIONスーパーグローバル配列に格納できます。訪問者がサイトにアクセスすると、PHPは自動的に(session.auto_startが1に設定されている場合)、または要求に応じて(明示的にsession_start()または暗黙的にsession_register()を介して)特定のセッションIDが要求とともに送信されたかどうかを確認します。この場合、以前に保存された環境が再作成されます。

http://www.php.net/manual/en/intro.session.php

が呼び出されたときsession_destroy()、期待どおりに動作しません。セッションはリモートで破棄されますが、ローカルCookieは削除されません。これを行うsetcookie(<session cookie name>)には、クライアント側でそれを破棄するために負の日付で呼び出す必要があります。繰り返しますが、PHPのWebサイトから:

session_destroy()は、現在のセッションに関連付けられているすべてのデータを破棄します。セッションに関連付けられているグローバル変数の設定を解除したり、セッションCookieの設定を解除したりすることはありません。セッション変数を再度使用するには、session_start()を呼び出す必要があります。

ユーザーをログアウトするなど、セッションを完全に強制終了するには、セッションIDも設定解除する必要があります。Cookieを使用してセッションIDを伝播する場合(デフォルトの動作)、セッションCookieを削除する必要があります。そのためにsetcookie()を使用できます。

http://www.php.net/manual/en/function.session-destroy.php

于 2012-11-08T10:52:21.667 に答える
1

とても短い:

リクエストごとにクライアントに送信されるセッションIDが作成され、これは通常PHPSESSIDと呼ばれるCookieに保存されます。クライアントはこのセッションIDで応答して、サーバーが属するセッションをサーバーに通知します。

session_destroyはデータの設定を解除するだけで、IDは設定解除しません。したがって、その方法を使用してCookieにアクセスすることはありません。

于 2012-11-08T10:51:21.390 に答える