WordPressセッションの基本的な使い方

ホーム WordPress セッション WordPressセッションの基本的な使い方
クラウドソーシング「ランサーズ」

WordPressセッションの基本的な使い方

セッションについて実際に勉強するために、まずはPHPを使った非常にシンプルなセッション管理のコードから始めてみましょう。これにより、セッションの基礎的な使い方を理解することができます。

1. セッションの基本的な開始とデータの保存

まずは、セッションを開始してデータを保存する基本的な方法について学びます。

ステップ 1: セッションの開始

PHPでセッションを利用するためには、ページの先頭で session_start() を使ってセッションを開始する必要があります。これは、サーバーがユーザーごとに一意のIDを生成し、そのIDを使ってデータを保存・取得できるようにするためです。

ステップ 2: セッションデータの保存と取得

$_SESSION スーパーグローバル変数を使用して、セッションデータを保存したり取得したりします。

実際のコード例

以下の例では、セッションを使ってユーザーの名前を保存し、それを表示するという非常にシンプルなものです。

<?php
// セッションを開始する
session_start();

// フォームが送信された場合
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['name'])) {
    // フォームから送られたユーザー名をセッションに保存
    $_SESSION['user_name'] = $_POST['name'];
}
?>

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>PHPセッションの勉強</title>
</head>
<body>
    <h1>セッションの基本的な使い方</h1>

    <!-- フォームでユーザー名を入力 -->
    <form method="post" action="">
        <label for="name">名前を入力してください:</label>
        <input type="text" id="name" name="name">
        <button type="submit">送信</button>
    </form>

    <?php
    // セッションにユーザー名が保存されている場合、それを表示
    if (isset($_SESSION['user_name'])) {
        echo "<p>こんにちは、" . htmlspecialchars($_SESSION['user_name']) . "さん!</p>";
    }
    ?>
</body>
</html>

このコードの説明

  1. セッションの開始 (session_start())
    ページの最初で session_start() を呼び出しています。これによって、セッションが存在しない場合は新しいセッションが作成され、既存のセッションがある場合はそのセッションが再開されます。
  2. ユーザーからのデータの取得 ($_POST)
    if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['name'])) でフォームからデータが送信されたかどうかを確認しています。送信されたユーザー名は $_POST['name'] から取得し、それをセッション変数 $_SESSION['user_name'] に保存しています。
  3. セッションデータの表示
    if (isset($_SESSION['user_name'])) でセッション変数 user_name がセットされているかを確認し、セットされていればその内容を表示します。これにより、ユーザーが名前を入力してページをリロードしても、名前が表示され続けます。

学習ポイント

  • session_start() の重要性: セッションを使うすべてのページで、セッションを開始するために必ず session_start() を最初に書く必要があります。
  • セッション変数の使用: $_SESSION スーパーグローバル変数を使うことで、データをセッションに保存し、異なるページ間でそのデータにアクセスできます。
  • フォームデータの受け渡し: セッションを使うことで、ユーザーがページをリロードしたり、異なるページに移動してもデータを保持することが可能です。

追加練習: セッションを利用して複数ページでデータを共有する

次に、セッションを使って2つの異なるページ間でデータを共有する方法を学びましょう。

ページ1 (page1.php)

このページでは、ユーザーの年齢を入力してセッションに保存します。

<?php
session_start();

// フォームが送信された場合、年齢をセッションに保存
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['age'])) {
    $_SESSION['user_age'] = $_POST['age'];
    header('Location: page2.php'); // page2.php にリダイレクト
    exit();
}
?>

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>Page 1 - セッションの利用</title>
</head>
<body>
    <h1>年齢を入力してください</h1>
    <form method="post" action="">
        <label for="age">年齢:</label>
        <input type="number" id="age" name="age">
        <button type="submit">送信</button>
    </form>
</body>
</html>

ページ2 (page2.php)

このページでは、page1.phpで保存された年齢を表示します。

<?php
session_start();
?>

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>Page 2 - セッションの利用</title>
</head>
<body>
    <h1>セッションからデータを取得</h1>

    <?php
    if (isset($_SESSION['user_age'])) {
        echo "<p>あなたの年齢は " . htmlspecialchars($_SESSION['user_age']) . " 歳です。</p>";
    } else {
        echo "<p>年齢が設定されていません。最初のページで入力してください。</p>";
    }
    ?>
</body>
</html>

学習ポイント

  • セッションを使ってページ間でデータを共有: page1.php で入力されたデータが page2.php でも利用できることを確認します。これにより、ユーザーが異なるページに移動してもセッションを通じてデータを引き継ぐことが可能になります。
  • リダイレクト (header('Location: page2.php')): データが保存された後、次のページにユーザーを移動させることで、ステップごとにデータを入力するマルチステップフォームのような仕組みを作成できます。

まとめ

セッションはPHPやWordPressで非常に強力なツールです。以下の点を押さえましょう:

  • session_start() を忘れずに記述することが重要: セッションを利用するすべてのページで、必ずセッションを開始する必要があります。
  • $_SESSION 変数を使ってデータを保存し、異なるページでそのデータにアクセス可能: セッションを活用することで、ユーザーがページを移動してもデータを保持できます。
  • 複数ページにまたがるフォームやアプリケーションでセッションが特に有効:

セッションの基本をマスターしたら、実際にWordPressで応用できるように学んでいきましょう。

Web制作のご依頼・ご相談など、お気軽にご連絡ください。

お問い合わせ