セッションを利用する

 セッションを使うと、サーバーにユーザーごとのデータを記憶させることができます。そのためにセッションIDが各ユーザーに割り当てられます。セッションIDはクッキーに保存され、やりとりされます。

セッションのイメージ
セッションのイメージ

 phpでセッションを使うには「$_SESSION」変数を利用します。またセッションを開始するには「session_start」関数を利用します。

関数名 session_start
パラメーターリスト
パラメター名 説明
- -
返り値
bool セッションが正常に開始した場合はTRUE、それ以外の場合はFALSE
session_start関数の仕様

○ ファイル

 「CookieForm.php」ファイルをコピーして、次のPHPファイルをプロジェクトに追加してください。

ファイルの種類 PHPファイル
ファイル名 SessionForm.php

サンプルダウンロード

○ プログラム

 次のようにプログラムを記述してください。

SessionForm.php

  1. <?php
  2. //セッションを開始する
  3. session_start();
  4. //ユーザー名のセッション情報を取得する
  5. if(isset($_SESSION['user_name'])){
  6.  $user_name = $_SESSION['user_name'];
  7. }else{
  8.  $user_name = '';
  9. }
  10. //名前のセッション情報を取得する
  11. if(isset($_SESSION['name'])){
  12.  $name = $_SESSION['name'];
  13. }else{
  14.  $name = '';
  15. }
  16. //Emailのセッション情報を取得する
  17. if(isset($_SESSION['email'])){
  18.  $email = $_SESSION['email'];
  19. }else{
  20.  $email = '';
  21. }
  22. ?>
  23. <!DOCTYPE html>
  24. <html>
  25.  <head>
  26.   <meta charset="UTF-8">
  27.   <title>データ入力フォーム</title>
  28.  </head>
  29.  <body>
  30.   <p>ユーザー情報をセッションに保存する</p>
  31.   <form action="SessionTest.php" method="POST">
  32.    ユーザー名:
  33.    <input type="text" name="user_name" value="<?php print($user_name); ?>">
  34.    <br>
  35.    名前:
  36.    <input type="text" name="name" value="<?php print($name); ?>">
  37.    <br>
  38.    Email:
  39.    <input type="email" name="email" value="<?php print($email); ?>">
  40.    <br>
  41.    <input type="submit">
  42.   </form>
  43.  </body>
  44. </html>

○ 解説

 3行目で、session_start関数を使ってセッションを開始させています。6、13、20行目では、isset関数を使用して$_SESSION内に指定したキーの値があるかどうかをチェックしています。存在していれば、セッション情報をそれぞれのデータ用の変数に格納し、存在していなければ、それぞれのデータ用の変数に空文字列をセットしています。

 それぞれのデータ用変数の内容を36、39、42行目のテキストボックスのデフォルト値として表示するようにしています。これにより、セッションに情報があれば入力フォームに前回入力した内容が表示されるようになります。

 次に、送信されたフォームデータをセッションに保存するプログラムを作成しましょう。

○ ファイル

 「CookieTest.php」ファイルをコピーして、次のPHPファイルをプロジェクトに追加してください。

ファイルの種類 PHPファイル
ファイル名 SessionTest.php

サンプルダウンロード

○ プログラム

 次のようにプログラムを記述してください。

SessionTest.php

  1. <?php
  2. //セッションを開始する
  3. session_start();
  4. //セッション情報登録
  5. $_SESSION['user_name'] = $_POST['user_name'];
  6. $_SESSION['name'] = $_POST['name'];
  7. $_SESSION['email'] = $_POST['email'];
  8. ?>
  9. <!DOCTYPE html>
  10. <html>
  11.  <head>
  12.   <meta charset="UTF-8">
  13.   <title>セッション登録</title>
  14.  </head>
  15.  <body>
  16.   <p>セッション情報を登録しました。<p>
  17.   <a href="SessionForm.php">入力フォームに戻る</a>
  18.  </body>
  19. </html>

○ 実行結果

実行結果
実行結果

○ 解説

 3行目で、session_start関数を使ってセッションを開始させています。6~8行目で、フォームで入力されたデータをセッション変数に格納しています。

 18行目のリンクをクリックすると、「SessionForm.php」に遷移します。この時、セッションに格納されているデータをデフォルト値としてWebフォームが作られ、表示されます。

前へ   次へ