HTTPリクエストとHTTPレスポンスでセッションを確認します。
セッションIDの発行は、PHPを使用しています。
| 確認環境 ・Windows10 ・Google Chrome ・PHP 7.2.8 |
目次
- セッションの流れ
- セッションIDをセットするコード
- 初回表示時のHTTPリクエストとHTTPレスポンス
- リロード時のHTTPリクエストとHTTPレスポンス
- サーバー側のセッションIDのファイル
- Chromeブラウザでクッキーを確認する
セッションの流れ

1.クライアントがWebサーバーにアクセスします。
2.WebサーバーにあるプログラムがセッションIDを発行してクッキーでクライアントに送ります。
3.再度クライアントがWebサーバーにアクセスする時、クッキーをWebサーバーに送ります。WebサーバーにあるプログラムはクッキーのセッションIDを取得して識別します。
セッションIDをセットするコード
以下は、PHPのセッションIDを発行するコードです。
画面をリロードすると、数値が1つずつ上がっていきます。
<?php
session_start();
if(!isset($_SESSION["count1"])){
$rec = "初回表示時";
$_SESSION["count1"]=1;
}else{
$rec = $_SESSION["count1"]++;
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>sessionのサンプル</title>
</head>
<body >
<?=($rec)?>
</body>
</html>
3行目のsession_startでセッションを開始します。
5行目の!issetでセッションを確認しています。
最初の表示時の判定はtrueになり、画面に初回表示時と表示されます。
7行目はキーを指定して値を代入しています。
10行目は、値に1を加算しています。
初回表示時のHTTPリクエストとHTTPレスポンス
初回表示時のHTTPリクエストとHTTPレスポンスです。
以下は、クライアントからサーバーに送信するHTTPリクエストです。
初回なのでクッキーはありません。
| GET http://localhost/test1/ HTTP/1.1 Host: localhost Connection: keep-alive Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHT Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,imag Accept-Encoding: gzip, deflate, br Accept-Language: ja,en-US;q=0.9,en;q=0.8 |
以下は、HTTPレスポンスです。
サーバからクライアントにクッキーを渡します。
PHPSESSIDがセッションIDの名前で、=より右の文字列がセッションIDの値です。
上記コードにあった"count1"とその値は送信されません。
| HTTP/1.1 200 OK Date: Fri, 09 Nov 2018 13:06:01 GMT Server: Apache/2.4.34 (Win32) OpenSSL/1.1.0h PHP/7.2.8 X-Powered-By: PHP/7.2.8 Set-Cookie: PHPSESSID=rn8nmbsa2gm76phqfq563h84sf; path=/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate Pragma: no-cache Content-Length: 156 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/html; charset=UTF-8 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>sessionのサンプル</title> </head> <body > 初回表示時 </body> </html> |
リロード時のHTTPリクエストとHTTPレスポンス
リロードをしたときのHTTPリクエストとHTTPレスポンスです。
以下は、HTTPリクエストです。
最終行はクッキーです。
クライアントからサーバーにクッキーを送信しています。
| GET http://localhost/test1/ HTTP/1.1 Host: localhost Connection: keep-alive Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHT Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,imag Accept-Encoding: gzip, deflate, br Accept-Language: ja,en-US;q=0.9,en;q=0.8 Cookie: PHPSESSID=rn8nmbsa2gm76phqfq563h84sf |
以下は、HTTPレスポンスです。
サーバからクライアントへクッキーは送信されません。
| HTTP/1.1 200 OK Date: Fri, 09 Nov 2018 13:06:03 GMT Server: Apache/2.4.34 (Win32) OpenSSL/1.1.0h PHP/7.2.8 X-Powered-By: PHP/7.2.8 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate Pragma: no-cache Content-Length: 142 Keep-Alive: timeout=5, max=98 Connection: Keep-Alive Content-Type: text/html; charset=UTF-8 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>sessionのサンプル</title> </head> <body > 1 </body> </html> |
送信するセッションIDについて、この後リロードを繰り返しても同じ状態です。(HTTPリクエストにクッキーをつけて送信し、HTTPレスポンスはクッキーがない状態で受け取ります。)
サーバー側のセッションIDのファイル
XAMPPでは、サーバ側にセッションIDのファイルがあります。
場所は、XAMPPをインストールしたフォルダ配下のtmpフォルダ配下です。
確認した環境では、以下です。
E:\xampp\tmp\sess_am1605duvl7jki9oeomn4mbpdn
sess_から始まる文字列がファイルです。
ファイルの中身は以下のようになっています。
count1|i:3;
Chromeブラウザでクッキーを確認する
Google Chromeのデベロッパーツールでセッションで使用したクッキーを確認できます。
クッキーの内容は、セッションIDのみ確認できます。コードで使用した"count1"とその値は確認できません。
「F12」キーを押してデベロッパーツールを開き、「Application」→「Cookies」→「http://localhost」をクリックします。
valueの欄にある「am1605duvl7jki9oeomn4mbpdn」はセッションIDの値です。
サーバにあるファイル名のsess_を除いた部分と一致します。
中央の丸に斜め線が入ったアイコンは、クッキーをクリアします。

リンク
- 以下はPHPマニュアルのセッション関連のリンクです。
http://php.net/manual/ja/refs.basic.session.php
関連の記事
XAMPPをインストールする手順(Windows10)
クッキーを確認する(HTTPリクエストとHTTPレスポンスで確認)
「HTTPリクエスト」と「HTTPレスポンス」