LoginSignup
29
27

More than 5 years have passed since last update.

PHPで確認するクッキーとセッションメモ - 訪問回数のカウント

Last updated at Posted at 2016-07-23

概要

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.png

2回目アクセス

ScreenClip.png

何が起きたのか

  • 初回のアクセスはブラウザにクッキーが保存されていないためクッキーの送信は無い
  • サーバからは初回アクセス用のHTMLのメッセージと、「Set-Cookie」にセッションIDの文字列がクッキとしてレスポンスされる
  • サーバにはセッション情報が保存される(下部「セッション情報確認コマンド」参照)
  • 次回のアクセスはブラウザにクッキーが保存されているため、クッキーの情報を添えて、リクエストされる

シーケンス.png

パケットキャプチャで確認する

初回アクセス

リクエスト

1req.png

レスポンス

1res.png

2回目アクセス

リクエスト

2req.png

レスポンス

2res.png

保存されたセッション情報の確認

セッション情報確認コマンド
# 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;
29
27
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
27