PHP セッション

PHPセッション変数は、ユーザーセッションに関する情報を保存したり、ユーザーセッションの設定を変更するために使用されます。セッション変数が保存する情報は単一のユーザーのものであり、アプリケーションのすべてのページで使用できます。

PHPセッション変数

アプリケーションを実行するときは、それを開き、変更を行い、閉じます。これがセッションと非常に似ています。コンピュータはあなたが誰であるかを把握し、アプリケーションを起動した時と終了した時を知っています。しかし、インターネットでは、サーバーがあなたが誰であるかや行動を知らない問題があります。これはHTTPのアドレスが状態を維持できないためです。

ユーザーの情報をサーバー上に保存し、その後使用するようにすることで、PHPセッションはこの問題を解決します(例えば、ユーザーの名前、購入した商品など)。ただし、セッション情報は一時的であり、ユーザーがウェブサイトを離れた後に削除されます。情報を永続的に保存する必要がある場合は、データベースにデータを保存することができます。

セッションの動作メカニズムは、各訪問者に対してユニークなID(UID)を作成し、そのUIDに基づいて変数を保存することです。UIDはcookieに保存されるか、URLを通じて伝播されます。

PHPセッションの開始

ユーザーの情報をPHPのセッションに保存する前に、まずセッションを開始する必要があります。

注記:session_start()関数は<html>タグの前に配置する必要があります:

<?php session_start(); ?>
<html>
<body>
</body>
</html>

上記のコードは、ユーザーの情報を保存し始めるためにサーバーにユーザーのセッションを登録し、UIDをユーザーセッションに割り当てるために使用されます。

セッション変数の保存

セッション変数の保存と取得を行う正しい方法は、PHPの$_SESSION変数を使用することです:

<?php
session_start();
// store session data
$_SESSION['views']=1;
?>
<html>
<body>
<?php
//retrieve session data
echo "Pageviews=". $_SESSION['views'];
?>
</body>
</html>

出力:

Pageviews=1

以下の例では、シンプルなページビューカウンタを作成しています。isset() 関数を使用して「views」変数が設定されているかどうかを確認します。もし「views」変数が設定されている場合、カウンタを累積します。もし「views」が存在しない場合、新しい「views」変数を作成し、それを 1 に設定します:

<?php
session_start();
if(isset($_SESSION['views']))
  $_SESSION['views']=$_SESSION['views']+1;
else
  $_SESSION['views']=1;
echo "Views=". $_SESSION['views'];
?>

セッション終了

セッションデータの一部を削除する場合は、unset() または session_destroy() 関数を使用できます。

unset() 関数は指定されたセッション変数を解放するために使用されます:

<?php
unset($_SESSION['views']);
?>

また、session_destroy() 関数を使用してセッションを完全に終了することもできます:

<?php
session_destroy();
?>

注記:session_destroy() はセッションをリセットし、すべての保存されたセッションデータを失います。