PHPで学ぶ10選のページ分岐テクニック

PHPのページ分岐を学ぶコーディング画面PHP
この記事は約10分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればサンプルコードを活用して機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

こんにちは!

PHPを学び始めて、サイト内でのページ分岐がどのように行われるのか気になったことはありませんか?

この記事を読むことで、PHPによるページ分岐の基本から応用までを学ぶことができます。

10つの具体的なサンプルコードを通して、PHPでのページ分岐の手法を学びましょう。

●PHPページ分岐の基本

○PHPページ分岐とは

PHPでのページ分岐とは、ユーザーの行動やデータに応じて表示するWebページを切り替えることです。

例えば、ログイン済みのユーザーと未ログインのユーザーで表示するページを変えたり、検索クエリやフォームの入力データに応じて結果を表示するページを変えたりします。

これはPHPがサーバーサイドのプログラミング言語であるために可能な技術です。

●PHPページ分岐の使い方

ページ分岐を実現するためのPHPの基本的な使い方を見ていきましょう。

まずは最もシンプルなページ分岐から始めてみます。

○サンプルコード1:基本的なページ分岐

下記のコードは、最も基本的な形のページ分岐を表しています。

$page変数の値によって、表示するページの内容が変わります。

<?php
$page = 'home';

if ($page == 'home') {
    echo 'ホームページです。';
} elseif ($page == 'about') {
    echo 'アバウトページです。';
} else {
    echo 'ページが見つかりません。';
}
?>

このコードでは$page変数に代入された値によって、表示するメッセージが分岐しています。

$pageに’home’が代入されているので、’ホームページです。’と表示されます。

次に、ユーザーからの入力(今回はGETパラメータ)に応じてページ内容を変更する方法を見てみましょう。

○サンプルコード2:GETパラメータを使用したページ分岐

下記のコードは、GETパラメータを使ってページ分岐を行う例です。

URLに付加されたパラメータによって表示するページの内容が変わります。

<?php
$page = $_GET['page'];

if ($page == 'home') {
    echo 'ホームページです。';
} elseif ($page == 'about') {
    echo 'アバウトページです。';
} else {
    echo 'ページが見つかりません。';
}
?>

このコードでは$_GET[‘page’]でURLからpageパラメータの値を取得し、その値によって表示するメッセージを変えています。

例えば、URLがhttp://example.com?page=homeだった場合、’ホームページです。’と表示されます。

○サンプルコード3:POSTパラメータを使用したページ分岐

POSTメソッドは、フォームからデータを送信する際によく使われます。

ここでは、POSTパラメータを使ってページ分岐をする方法を見ていきます。

<?php
$page = $_POST['page'];

if ($page == 'home') {
    echo 'ホームページです。';
} elseif ($page == 'about') {
    echo 'アバウトページです。';
} else {
    echo 'ページが見つかりません。';
}
?>

上記のコードでは、$_POST[‘page’]によってフォームから送られてきたpageパラメータの値を取得し、その値によって表示するメッセージを変えています。

このように、POSTパラメータもページ分岐に利用することができます。

●PHPページ分岐の応用例

それでは、より高度なページ分岐のテクニックを見ていきましょう。

○サンプルコード4:セッションを使用したページ分岐

ユーザー認証が必要なサイトでは、セッションを使用してユーザーのログイン状態を管理します。

下記のコードでは、セッションを用いてページ分岐を行っています。

<?php
session_start();

if (isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == true) {
    echo 'ログイン済みのページです。';
} else {
    echo 'ログインが必要なページです。';
}
?>

この例では、$_SESSION[‘loggedin’]が存在し、その値がtrueであればログイン済みと判断し、’ログイン済みのページです。’と表示します。

そうでなければ、’ログインが必要なページです。’と表示します。

○サンプルコード5:ログイン機能とページ分岐

ログイン機能を持つサイトでは、ログインの有無によってページ内容を分岐することが一般的です。

下記のコードでは、ログイン状態を示す$loggedin変数によって表示を切り替えています。

<?php
$loggedin = true; // ログイン状態を表す変数

if ($loggedin) {
    echo 'ログインユーザーのページです。';
} else {
    echo 'ゲストユーザーのページです。';
}
?>

$loggedinがtrue(ログイン済み)であれば’ログインユーザーのページです。’と表示し、そうでなければ’ゲストユーザーのページです。’と表示します。

○サンプルコード6:ユーザーの権限に応じたページ分岐

次に、ユーザーの権限に応じてページ分岐を行う方法を見ていきましょう。

下記のコードでは、ユーザーのロールによって表示するメッセージを変えています。

<?php
$role = 'admin'; // ユーザーのロール

if ($role == 'admin') {
    echo '管理者ページです。';
} elseif ($role == 'member') {
    echo 'メンバーページです。';
} else {
    echo 'ゲストページです。';
}
?>

この例では、$roleの値によって表示を切り替えています。

管理者なら’管理者ページです。’と表示し、メンバーなら’メンバーページです。’と表示します。

それ以外の場合は’ゲストページです。’と表示します。

●PHPページ分岐の注意点と対処法

PHPでページ分岐を実装する際には、いくつかの注意点があります。

ここでは、それぞれの問題を解決するための対処法についても言及します。

  1. ユーザーから送られてくるパラメータは、悪意のある値である可能性があります。
    そのため、パラメータをそのまま信用せず、適切なサニタイズ処理を行うことが重要です。
  2. エラーハンドリングも重要な部分です。
    存在しないページへのアクセスや、パラメータが期待する形式でない場合など、予期しない状況に対応するコードを書くことが求められます。
  3. サーバーサイドの処理に依存するため、ユーザーによる操作によりページの状態が変わることを明確に伝えることが重要です。

これらの注意点と対処法を踏まえて、次のセクションでは、より高度なページ分岐のカスタマイズ方法を見ていきましょう。

●PHPページ分岐のカスタマイズ方法

ページ分岐のカスタマイズとは、基本的な分岐処理に加えて、特定の条件に基づいたさまざまな処理を追加することを指します。

○サンプルコード7:エラーハンドリングとページ分岐

エラーハンドリングは、プログラムが予期せぬエラーに遭遇した場合に、適切な対応を行うためのものです。

下記のコードでは、エラーハンドリングを組み込んだページ分岐の例を表しています。

<?php
$page = $_GET['page'];

try {
    if ($page == 'home') {
        echo 'ホームページです。';
    } elseif ($page == 'about') {
        echo 'アバウトページです。';
    } else {
        throw new Exception('ページが見つかりません。');
    }
} catch (Exception $e) {
    echo $e->getMessage();
}
?>

このコードでは、期待しない$pageの値が来た場合に、Exceptionを投げてエラーメッセージを表示しています。

これにより、予期しない状況に対する対応が可能となります。

次に、リダイレクトを用いたページ分岐の方法について見ていきましょう。

○サンプルコード8:リダイレクトを使ったページ分岐

リダイレクトは、特定のURLから別のURLへ自動的にユーザーを送り込む機能のことを指します。

下記のコードでは、リダイレクトを用いたページ分岐の例を表しています。

<?php
$page = $_GET['page'];

if ($page == 'home') {
    header('Location: /home.php');
    exit;
} elseif ($page == 'about') {
    header('Location: /about.php');
    exit;
} else {
    header('Location: /404.php');
    exit;
}
?>

このコードでは、ページの名前によって異なるページにリダイレクトしています。

これにより、コード内での条件分岐を減らし、各ページのコードを独立させることができます。

続いて、フォームからの入力データを利用したページ分岐について見ていきましょう。

○サンプルコード9:フォーム入力データとページ分岐

ユーザーからの入力データは、ページ分岐に大きな役割を果たします。

下記のコードでは、フォームからの入力データを元にページ分岐を行う例を表しています。

<?php
$searchKeyword = $_POST['search'];

if ($searchKeyword == 'PHP') {
    echo 'PHPに関する記事一覧です。';
} elseif ($searchKeyword == 'JavaScript') {
    echo 'JavaScriptに関する記事一覧です。';
} else {
    echo '検索キーワードに該当する記事が見つかりません。';
}
?>

このコードでは、検索キーワードによって表示する記事のカテゴリを変更しています。

これにより、ユーザーは自分の検索キーワードに基づいた結果を見ることができます。

最後に、複雑な条件によるページ分岐について見ていきましょう。

○サンプルコード10:条件による複雑なページ分岐

複数の条件を組み合わせることで、より複雑なページ分岐を実現することができます。

下記のコードでは、ユーザーのロールとログイン状態によってページ内容を変更しています。

<?php
$role = 'admin'; // ユーザーのロール
$loggedin = true; // ログイン状態を表す変数

if ($role == 'admin' && $loggedin) {
    echo '管理者としてログインしています。';
} elseif ($role == 'member' && $loggedin) {
    echo 'メンバーとしてログインしています。';
} else {
    echo 'ゲストユーザーです。';
}
?>

この例では、ユーザーのロールとログイン状態の2つの条件を組み合わせて、ページの表示を切り替えています。

これにより、ユーザーにより適切な情報を提供することができます。

まとめ

この記事では、PHPでのページ分岐の基本的な方法から応用例、注意点とその対処法、カスタマイズ方法までを解説しました。

これらの知識を身につけることで、ユーザーにより良い体験を提供するウェブアプリケーションの開発が可能となります。

しかし、ここで紹介した内容は一部に過ぎません。さらに学び深め、自分だけのオリジナルなページ分岐を実現してみてください。