[解決済み] 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 の中でどのように渡されるのか、そしてどの設定オプションがこれに影響するのかが説明されています。
関連
-
[解決済み] PHP - ストリームを開くのに失敗しました : そのようなファイルまたはディレクトリがありません。
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] PHPでHTML/XMLをパースして処理する方法とは?
-
[解決済み] PHPのエラーを表示させるにはどうしたらいいですか?
-
[解決済み] PHPのセッションを30分後に失効させるにはどうしたらいいですか?
-
[解決済み] JSONウェブトークンの無効化
-
[解決済み] セッションとは何ですか?どのように機能するのですか?
-
[解決済み】PHPの'foreach'は実際どのように動作するのですか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
-
[解決済み】セッションは本当にRESTfulnessに違反するのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Fatal error: 未定義の関数 sqlsrv_connect() を呼び出した。
-
[解決済み】PHPで空の値からデフォルトオブジェクトを作成する?
-
[解決済み】予期せぬ例外。SQLSTATE[HY000] [1045] Access denied for user ****@'localhost' (using password: YES)
-
[解決済み】Xampp ローカルホスト/ダッシュボード
-
[解決済み】PHPからPythonスクリプトを実行する
-
[解決済み】PHP フェイタルエラー。未定義の関数mssql_connect()をコールしています。
-
[解決済み] * vchiqインスタンスを開くのに失敗しました。
-
[解決済み】file_get_contents( )が動作しない。
-
[解決済み] PHP - ストリームを開くのに失敗しました : そのようなファイルまたはディレクトリがありません。
-
[解決済み】すべてのWebリクエストは、ブラウザのクッキーを送信しますか?