ウェブサイトを構築するときに、サイトへ訪問するユーザー一人ひとりを
管理しなければいけない時があります。例を挙げるとすると、
ユーザーの名前を表示したり、ユーザーが選んだ商品名をリストにして
表示したしなければならない場合です。
通常のウェブの仕組みでは、原則、ユーザー1人ひとりの
管理することはできません。このときセッション(session)という
仕組みが利用できます。
「セッション」は、1人のユーザーを表す考えです。
セッションを管理することによって、1人のユーザーが
ウェブサイトにやってきてから帰りまでの行動を管理することができます。
セッション管理の仕組みって?
ウェブクライアントを使って、ウェブサーバーにアクセスしたときに、
ウェブサーバーはウェブクライアントにセッションIDと呼ばれる
識別番号を割り当てます。ウェブクライアントは、このセッションIDを
記憶します。
*ウェブクライアント=ブラウザと考えると
分かりやすかもしれません。
この一連の処理はPHPによって行われていて、コードを書いている
私は意識しないでもセッション管理機能を使うことができます。
セッション管理をやってみる
セッション管理するためには、コードの先頭でセッション管理を
開始する処理をします。
session_start()関数を使います。
<?php session_start(); ?>
この処理はHTML文章よりも前に書きます。
<?php session_start(); ?>
<!doctype html>
<html>
・・・
セッションを開始すると、スーパーグローバル変数である
$_SESSIONを使えるようになります。
$_SESSIONには、キーと値の組合せを格納することができます。
例えば、ユーザーの訪問回数を表す「count」というキーと、
それの値を格納できます。以下のように書きます。
$_SESSION["count"]=1;
サンプルコードの実行結果はこちら
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<?php session_start(); ?> <!doctype html> <html> <head> <meta charset="utf-8"> <title>$_SESSIONを使ってユーザー管理をしてみる</title> <link rel="stylesheet" href="../style.css"> </head> <body> <?php if( !isset( $_SESSION["count"] ) ){ $_SESSION["count"] = 1; echo "はじめまして<br>"; }else{ $_SESSION["count"]++; echo $_SESSION["count"] . "回目の訪問!<br>"; } ?> </body> </html> |
上記のコードを実行して、実行1回目は
「はじめまして」と表示されます。
次にF5でブラウザを更新すると、
「2回目の訪問!」と表示されます。次は
「3回目の訪問!」と表示され表示回数が増えていることが
分かります。これは、セッションの考えによって、
1人のユーザーを管理しているからです。
isset()関数で、$_SESSION["count"]が存在するか
調べます。値が存在しない時は、セッションのcountキーの値を
1に設定し、「はじめまして」と表示します。値が存在する場合は
countキーの値を1加算して、訪問回数として、countの値を
表示してます。
セッション管理によって、1人のユーザーを特定することができます。
セッション情報は$_SESSIONに格納されます。