PHP 学習メモ 5

概要

 PHP 学習メモ。セッションについて。

内容

  1. セッション

1. セッション

 セッションとは:

www.php.net

 session_start() により現在のセッションを開始し、現在のセッション ID に関するセッション変数 $_SESSION にアクセスできるようになる。

www.php.net

 次のコードでこれを確認する。

  • page1.php
<?php
session_start();

echo 'Welcome to page #1<br>';

// セッション ID を表示
var_dump(session_id());
echo '<br>---<br>';

// セッション変数を表示
var_dump($_SESSION);
echo '<br>---<br>';

$_SESSION['message'] = '#1 メッセージ';

echo '<a href="page2.php">page 2</a>';
?>
  • page2.php
<?php
session_start();

echo 'Welcome to page #2<br>';

// セッション ID を表示
var_dump(session_id());
echo '<br>---<br>';

// セッション変数を表示
var_dump($_SESSION);
echo '<br>---<br>';

$_SESSION['message'] = '#2 メッセージ';

echo '<a href="page1.php">page 1</a>';
?>

 これらを使って次の 2 通りの検証を行う:

  • session_start() を実行する場合:上記コードそのままで動作確認
  • session_start() を実行しない場合:page2.phpsession_start()コメントアウトして動作確認

session_start() を実行する場合

  • No.1 page1.php 初回アクセス時

 現在のセッション ID が表示される(画面 2 行目)。初回アクセス時は、このセッション ID に関するセッション変数は空になっている。


  • No.2 page1.php のリンクから page2.php にアクセス

 page1.php 初回アクセス時と同じセッション ID を保持している。これは session_start() によって同じセッションが開始されたためである。セッション変数には「#1 メッセージ」が格納されている。これは page1.php 初回アクセス時にセッション変数に「#1 メッセージ」が追加され、同じセッション ID を参照しているためである。


  • No.3 page2.php のリンクから page1.php にアクセス

 page1.php 初回アクセス時と同じセッション ID を保持している。session_start() によって同じセッションが開始されていることがうかがえる。セッション変数には「#2 メッセージ」が格納されている。page2.php アクセス時にセッション変数に「#2 メッセージ」が追加され、同じセッション ID を参照していることがうかがえる。


session_start() を実行しない場合

 次に page2.phpsession_start()コメントアウトして同じことを実行する。

<?php
// session_start();

echo 'Welcome to page #2<br>';
  • 上記 No.1 に該当する手順

 同様の結果だった。


  • 上記 No.2 に該当する手順

 セッション ID は空文字で出力された。これは次のドキュメントに書いてある。

www.php.net

session_id() は現在のセッションのセッション ID を返します。 現在のセッションが存在しない (現在のセッション ID が存在しない) 場合は空文字列 ("") を返します。

 セッション変数は NULL になる。これは次のドキュメントを探したが見つけられなかった。

www.php.net


  • 上記 No.3 に該当する手順

 セッション ID は保持されている。セッション変数は「#1 メッセージ」となったままであり、手順 No.2 でセッション変数が上書きされなかったことがわかる。