セッションを利用する[SESSION][PHPSESSID]

2016年1月28日

PHP

セッションを利用すれば、複数ページに渡ってデータを受け渡すことができます。ウェブサービスにおいては、ユーザに関する情報を保持する場合などに使われています。セッションによって、サービスを利用している間のユーザの動きを管理しているとも言えます。

 

もう少し抽象的に言えば、「セッション」はある特定のクライアントとサーバとの間に行われる一つの行動単位として捉えることができます。例えば「ログインしている間の買い物」がそうです。HTTPプロトコルはクライアントの要求に対してサーバが応答すると、そこで一端切断されてしまいます。そこで複数ページに渡ってデータを受け渡すためにあるのが、このセッションとよばれる機能なのです。

 

 

スポンサーリンク

 

 

仕組み


 

セッションは、セッションIDと呼ばれるユニークなIDを元に実行されています。

 

セッションが設定されたページに初めて訪れると、サーバからセッションIDが発行され、サーバ上にそのIDが名前に付けられたセッションファイルが作成されます。それと同時に、そのIDがクライアント側のブラウザのクッキーにも保存されます。このようにしてWebクライアントとサーバとの間にIDがひも付けされるとユーザを特定することができ、セッションの管理ができるというわけです。

 

今回作成するのは、以下のような簡単な遷移を持つセッション管理です。

 

初めのページ(session1.php)に訪れ、リロードすると「ウェブの葉さん、こんにちは」と表示されます。次のページ(session2.php)へ進むとセッション名などが表示され、さらに破棄ページ(session3.php)へと遷移するとセッションが破棄されます。

 

デモ画面

 

 

手順


 

session1.php

 

4行目
セッションはsession_start()で開始します。

 

この時に、サーバはクライアント側のクッキーを調べます。もしセッションIDのクッキー(セッションクッキー)が存在しなければ発行します。

 

6行目
サーバ上で発行されたセッションIDが表示されます。

 

7行目

はじめてこのページを訪れた時は(もしくはセッション切れの時)、クライアント側のクッキーは存在していないので、IDは無表示になっています。PHPSESSIDはデフォルトで用意されているセッション名です(セッションIDとセッション名は違います)。リロードするとクライアント側にクッキーとして書き込まれ表示されるようになります。

 

 

はじめは、クライアント側のセッションIDは空白になっている。

 

セッション2

 

 

9〜13行目
セッションはスーパーグローバル変数$_SESSIONにデータを格納します。
まだ$_SESSION[‘name’]には何も保存されていない場合、ここでは「ウェブの葉」という名前を保存しています。

 

16行目
ページをリロードすると、$_SESSION[‘name’]には既にウェブの葉という名前が保存されているので、その名前が18行目の次ページへのリンクとともに表示されます。

 

 

session2.php

 

6行目

前画面から引き継いだ$_SESSION[‘name’] が表示されます。

 

8行目

セッション名が表示されます。デフォルトではPHPSESSIDが表示されます。

 

 

session3.php

 

7〜15行目
セッションを切断するには、セッション変数を全て解除し破棄します。そしてクッキーも削除します。

 

 

関連ページ

クッキーを利用する[COOKIE]

 

 

LINEで送る
Pocket

Copyright © 2019 思考の葉 All Rights Reserved.  プライバシーポリシー