PHP セッションのサンプル

PHPのセッションのサンプルです。
XAMPPの環境で実行しています。

目次

セッションの流れ

1.クライアントがWebサーバーにアクセスします。
2.WebサーバーがセッションIDを発行してクライアントに送ります。
3.再度クライアントがWebサーバーにアクセスする時、WebサーバーはクライアントのセッションIDを取得し対象を識別します。

コード

1行目のsession_start関数でセッションを開始します。
10行目の$_SESSIONは、スーパーグローバル配列です。リクエスト間でデータを格納できるようになります。isset関数で、変数がセットされているか確認しています。
11-13行目はキーを指定して値を代入しています。連想配列で保持されます。
16-18行目はキーを指定して値を加算しています。
21-23行目はキーを指定して値を表示しています。
25行目は、別ページに画面遷移するリンクです。画面が切り替わってもセッションIDとセッションIDの変数は保持されます。

<?php session_start(); ?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>sessionのサンプル</title>
</head>
<body >
<?php
if(!isset($_SESSION["cnt1"])){
	$_SESSION["cnt1"]=1;
	$_SESSION["cnt2"]=11;
	$_SESSION["cnt3"]=101;
	print "初回表示"<br />;
}else{
	$_SESSION["cnt1"]++;
	$_SESSION["cnt2"]++;
	$_SESSION["cnt3"]++;
	print "2回め以降の表示<br />";
}
	print "{$_SESSION["cnt1"]} カウント<br />";
	print "{$_SESSION["cnt2"]} カウント<br />";
	print "{$_SESSION["cnt3"]} カウント<br />";
?>
<a href="./index2.php">次のページ</a>
</body>
</html>

以下は、上記コードの25行目をクリックした時に表示されるページです。(index2.php)
11-13行目は、遷移元画面で設定したセッションIDの変数が表示されます。

<?php session_start(); ?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>sessionのサンプル</title>
</head>
<body>
遷移先のページです。<br />
<?php
	print "{$_SESSION["cnt1"]} カウント<br />";
	print "{$_SESSION["cnt2"]} カウント<br />";
	print "{$_SESSION["cnt3"]} カウント<br />";
?>
<a href="./index.php">戻る</a>
</body>
</html>

画面イメージ

上記コードを実行した時の画面です。
初回表示時です。

 

ブラウザを2回再読込した時の画面です。値が加算されています。

 

別ページに遷移した時の画面です。セッションIDと変数は遷移元画面と同じです。

サーバー側のセッション

XAMPPでは、XAMPPをインストールしたフォルダ配下のtmpフォルダにセッションIDのファイルがあります。
確認した環境では、D:\xampp\tmpに
sess_vpcbn8cb12c5etm7bi24mcsrapというファイルがありました。

ファイルの中身は以下のようになっています。

cnt1|i:3;cnt2|i:13;cnt3|i:103;

クライアント側のセッション

クライアント側にはセッションIDのみが送られてきます。(クッキー)
Google Chromeのデベロッパーツールで確認できます。
「F12」キーを押してデベロッパーツールを開き、「Application」>「Cookies」>「http://localhost」をクリックします。
valueの欄にある「vpcbn8cb12c5etm7bi24mcsrap」はサーバにあるファイル名のsess_を除いた部分と一致します。

セッションの破棄

セッションを破棄するコードです。
サーバー側のセッションが破棄されます。

	$_SESSION = array();
	session_destroy();

ただし、クライアント側のクッキーは残るので別途クッキーの削除も必要です。

リンク

関連の記事

ローカルにPHPが動く環境を作る手順(XAMPP)
PHP クッキーのサンプル




△上に戻る