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>
このコードの説明
- セッションの開始 (
session_start()
)
ページの最初でsession_start()
を呼び出しています。これによって、セッションが存在しない場合は新しいセッションが作成され、既存のセッションがある場合はそのセッションが再開されます。 - ユーザーからのデータの取得 (
$_POST
)
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['name']))
でフォームからデータが送信されたかどうかを確認しています。送信されたユーザー名は$_POST['name']
から取得し、それをセッション変数$_SESSION['user_name']
に保存しています。 - セッションデータの表示
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で応用できるように学んでいきましょう。