1. ホーム
  2. php

[解決済み] PHP のセッションはどのように動作するのでしょうか? (「どのように使われるのですか?」ではありません)

2022-06-02 09:55:08

質問

セッションファイルは、通常、例えば /tmp/ に格納され、名前は sess_{session_id} . 私は中身を見てきましたが、実際にどのように動作するのかがわかりません。

ファイルから変数名と内容を取得するのは簡単です。しかし、PHPはどのセッションが誰のものかをどうやって知ることができるのでしょうか?

session_idは完全にランダムなようで、1つのIPアドレスが複数のユーザーを持つことができ、複数のブラウザウィンドウを開いていれば、各ユーザーは複数のセッションを持つことができます。

では、どのように動作するのでしょうか?

どのように解決するのか?

一般的な状況下で:

  • セッション ID は、セッションが作成されたときにユーザーに送信されます。
  • はクッキーに保存されます (デフォルトで呼び出されます。 PHPSESSID )
  • そのクッキーは、リクエストごとにブラウザからサーバーに送信されます。
  • サーバー (PHP) は session_id を含むそのクッキーを使って、 どのファイルがそのユーザーに対応するかを知ることができます。

セッション・ファイルのデータは、その内容が $_SESSION の内容であり、シリアライズされた (のような関数で文字列として表現されます。 シリアライズ ) で、PHP で読み込まれたときにシリアライズが解除されます。 $_SESSION 配列に格納されます。



時々、セッション ID はクッキーに保存されず、URL で送信されることもあります -- しかし、最近ではかなりまれなことです。



より詳細な情報については セッションの取り扱い セクションを参照してください。

例えば、以下のページがあります。 セッションIDを渡す というページがあり、セッション ID がページからページへ、クッキーを使って、あるいは URL の中でどのように渡されるのか、そしてどの設定オプションがこれに影響するのかが説明されています。