3

「簡単なセッション」に関する質問はたくさんありますが、探しているものが見つからないようです。PHP ドキュメントがこれをうまく説明していないように見えるので、少し気になります。

三つ折りの質問。

  1. session_destroy() はセッション データを消去しますが、グローバル変数は消去しません。データは消去されますが、変数はそのままですか? ドキュメンテーションは、グローバル変数によって何を意味しますか?

  2. セッション データを破棄するために使用できるさまざまな方法にはどのようなものがありますか? session_destroy で十分ではありませんか? いくつかのコード例で見たように、以下のコーディングを使用する理由は次のとおりです。

    session_start();
    $_SESSION = array();
    session_destroy();
    
  3. セッションはブラウザ インスタンス間で持続するようです。たとえば、IE9 は、2 つの別々のブラウザーが開かれている場合、同じセッション ID を保持します。クロムと同じ。すべてのブラウザを閉じると、新しいセッション ID が取得されます。これは常にすべてのブラウザに当てはまりますか? コーディング中にこれを念頭に置いておくことができるようにしたいのですが、一部のブラウザーが永続的ではなく、コードが永続的であると考えていることを後で知りたくないため、あらゆる種類のエラーが発生するリスクがあります。

これらの質問に答えるのを手伝ってくれる人に前もって感謝します。

4

2 に答える 2

1
  1. $_SESSION is the super global variable
  2. The session_destroy function is basicly enough. It deletes the session_file on the server where all session-variables are stored and removes the session-cookie. The variables are after the session_destroy call still in the memory, but changing these values has no effect (except you call session_start() again).

    But the code snippet removes the variables from the memory too. This is important if for example the application checks for $_SESSION['admin'] later in the same request to see if the user has admin rights.

    The session_start() function is needed because you need to load the session first to delete it.

  3. Sessions are not persistant across diffrent browsers, however they are persistant across all windows/tabs of the same browser. What happens if you close the browser really depends on your PHP-ini setting. session.cookie_lifetime defines how long (in seconds) the browser should keep the cookie (even after restart). If session.cookie_lifetime is set to 0 the browser deletes the session cookie when closing.

    session.gc_maxlifetime defines how long the webserver keeps the session file (without the session file the session-cookie is invalid)

于 2012-07-31T13:00:16.157 に答える
1

ドキュメンテーションは、グローバル変数によって何を意味しますか?

$_SESSIONスーパーグローバル変数について話しています。

セッション データを破棄するために使用できるさまざまな方法にはどのようなものがありますか? session_destroy で十分ではありませんか? いくつかのコード例で見たように、以下のコーディングを使用する理由は次のとおりです。

これを使用してコンテンツを削除し$_SESSION、残りのスクリプトで期限切れのデータを使用しないようにします。スクリプトのある時点で、ユーザーのセッションをクリアすることを決定したため、他のロジックでそのセッションの日を使用したくないとします。空の配列に設定$_SESSIONすると、以前の内容がすべて消去されます。

これは常にすべてのブラウザに当てはまりますか?

はい、セッションは Cookie に基づいて特定のユーザーに関連付けられ (通常)、ユーザーがサイトにアクセスするたびに (Cookie がある場合)、開いているタブの数や開いているかどうかに関係なく、サイトに送信されます。タブブラウジングを使用していません。

于 2012-07-31T12:56:37.453 に答える