概要
PHPでクッキーとセッションの動作を確認する。たまによく分からなくなるので、基本の動きのメモ。
確認手順
1.ソースコードの準備
Webサーバに配置すること
◯参考
セッション変数の書き込みと読み込み - セッション管理 - PHP入門
http://www.phpbook.jp/tutorial/session/index2.html
index.php
<?php
session_start();
?>
<html>
<head><title>PHP TEST</title></head>
<body>
<?php
if (!isset($_SESSION["visited"])){
print('初回の訪問です。セッションを開始します。');
$_SESSION["visited"] = 1;
}else{
$visited = $_SESSION["visited"];
$visited++;
print('訪問回数は'.$visited.'です。<br>');
$_SESSION["visited"] = $visited;
}
?>
</body>
</html>
動作確認
初回アクセス
2回目アクセス
何が起きたのか
- 初回のアクセスはブラウザにクッキーが保存されていないためクッキーの送信は無い
- サーバからは初回アクセス用のHTMLのメッセージと、「Set-Cookie」にセッションIDの文字列がクッキとしてレスポンスされる
- サーバにはセッション情報が保存される(下部「セッション情報確認コマンド」参照)
- 次回のアクセスはブラウザにクッキーが保存されているため、クッキーの情報を添えて、リクエストされる
パケットキャプチャで確認する
初回アクセス
リクエスト
レスポンス
2回目アクセス
リクエスト
レスポンス
保存されたセッション情報の確認
セッション情報確認コマンド
# cat /etc/php.ini | grep session.save_path
session.save_path = "/var/lib/php/session"
# cat /var/lib/php/session/sess_
sess_06lplefgvgqa4psh1dgeqoaf02 sess_fggcljpfulitqkf32ghkqq2271 sess_rhdcn2thun0ia6lh1f829qjov4
sess_1j7cf2s2j6ki0ggchd5ju6ekk3 sess_hhajts2ogc6ckab2hmrhfuhp30 sess_sagu5svbl9c45mbgk4f2m8tts0
sess_5gpns2ua4880su39smk34r7nc2 sess_jv1iosc08o3sd0s3f269cgo127 sess_sjbi3u7mstusbo2pp7q05phu00
sess_bghto98dmkpak768f9dpjq1tv1 sess_kfhl7os3qmqr0grmh9cm9slet4 sess_ve05koevrn7h66bk53c9428lh7
sess_dacumrc334sadijnrksou7ftu3 sess_kvdf9sdvr80tetn6q9idr560a0 sess_vg3n5f05e3hlf8t8bobqrsvkv3
sess_drug7beoli4bnj3fmtq5np89v6 sess_o5rrhkcquilub02hi92fbaa303
# cat /var/lib/php/session/sess_hhajts2ogc6ckab2hmrhfuhp30
visited|i:2;