PHPで掲示板機能を作る7ステップ

PHPを使った掲示板機能の作り方を解説する記事のサムネイル PHP

 

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

このサービスはSSPによる協力の下、運営されています。

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

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

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

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

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

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

はじめに

この記事を手元に、初心者であってもPHPを使って自身の掲示板機能を作ることができるようになります。

掲示板機能の基本から応用までをステップバイステップで学び、サンプルコードを通じて理解を深めます。

プログラミングの知識がまだない方でも、この記事を読み進めていくことで、自分自身で掲示板機能を作成することが可能になります。

●PHPとは

PHPは、Webサイトの開発に広く用いられるプログラミング言語の一つです。

HTMLと組み合わせて使用され、動的なWebページを作成するのに適しています。

特に、データベースと連携した処理を行うための機能が豊富で、掲示板のようなデータの入出力を必要とするWebアプリケーションの開発には適しています。

●掲示板機能の基本的な機能

掲示板機能とは、ユーザーがメッセージを投稿し、他のユーザーと共有するためのWebページです。主に、メッセージの投稿・表示・削除といった基本的な機能を持ちます。

これらの機能をPHPを使って一から作成することで、Webアプリケーションの基本的な動作を理解することができます。

●PHPを使った掲示板の作り方

○サンプルコード1:データベース接続

掲示板機能を作る第一歩は、データベースとの接続です。

下記のコードは、PHPを使ってデータベースに接続する基本的なコードです。

<?php
$dsn = 'mysql:host=localhost;dbname=testdb;charset=utf8';
$user = 'username';
$password = 'password';

try {
    $dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}
?>

このコードでは、PDOというPHPのライブラリを使って、データベースに接続しています。

まずは、ホスト名、データベース名、文字コードを設定します。次に、データベースのユーザー名とパスワードを指定します。

最後に、PDOのインスタンスを生成してデータベースに接続します。

接続に失敗した場合はエラーメッセージを表示します。

○サンプルコード2:投稿機能

次に、掲示板にメッセージを投稿する機能を実装します。

下記のコードは、PHPで投稿機能を作るための一例です。

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $name = $_POST["name"];
    $message = $_POST["message"];
    
    $stmt = $dbh->prepare("INSERT INTO messages (name, message) VALUES (:name, :message)");
    $stmt->bindParam(':name', $name);
    $stmt->bindParam(':message', $message);
    $stmt->execute();
}
?>

このコードは、POSTリクエストが送られたときに動作します。

ユーザーが入力した名前とメッセージを取得し、それらをデータベースに保存します。

データベースへの書き込みは、SQLのINSERT文を用いて実行します。

なお、このコードを動作させるには、前述のデータベース接続コードが必要です。

○サンプルコード3:一覧表示機能

掲示板に投稿されたメッセージを一覧表示する機能も重要です。

下記のコードは、PHPで一覧表示機能を作るための一例です。

<?php
$stmt = $dbh->query("SELECT * FROM messages ORDER BY id DESC");
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    echo htmlspecialchars($row['name']) . ": " . htmlspecialchars($row['message']) . "<br>";
}
?>

このコードでは、データベースから全てのメッセージを取得し、それらをブラウザに表示します。

メッセージは新しいものから順に表示されます。

また、出力する際にはhtmlspecialchars関数を用いて、HTMLとして解釈される文字をエスケープします。

○サンプルコード4:削除機能

最後に、掲示板からメッセージを削除する機能を作ります。

下記のコードは、PHPで削除機能を作るための一例です。

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $id = $_POST["id"];
    $stmt = $dbh->prepare("DELETE FROM messages WHERE id = :id");
    $stmt->bindParam(':id', $id);
    $stmt->execute();
}
?>

このコードは、POSTリクエストが送られたときに動作し、指定されたIDのメッセージをデータベースから削除します。

データベースからの削除は、SQLのDELETE文を用いて実行します。

●PHPによる掲示板機能の応用例

掲示板の基本的な機能を一通り作成した後は、さらなる便利な機能を追加することで、ユーザー体験を向上させることが可能です。

編集機能、ページネーション機能、検索機能を追加する方法を解説します。

○サンプルコード5:編集機能

ユーザーが過去に投稿したメッセージを後から編集できるようにする機能です。

下記のコードは、PHPで編集機能を作るための一例です。

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $id = $_POST["id"];
    $message = $_POST["message"];
    $stmt = $dbh->prepare("UPDATE messages SET message = :message WHERE id = :id");
    $stmt->bindParam(':message', $message);
    $stmt->bindParam(':id', $id);
    $stmt->execute();
}
?>

このコードはPOSTリクエストが送られたときに動作します。

指定されたIDのメッセージを新しいメッセージに更新します。データベースの更新はSQLのUPDATE文を用いて実行します。

○サンプルコード6:ページネーション機能

掲示板に多くのメッセージが投稿されると、一覧表示が見づらくなります。

そこで、ページネーションという機能を使って、一覧を複数のページに分割します。

下記のコードは、PHPでページネーション機能を作るための一例です。

<?php
$page = 0;
if (isset($_GET['page']) && is_numeric($_GET['page'])) {
    $page = (int) $_GET['page'];
}
$items_per_page = 10;
$offset = $page * $items_per_page;

$stmt = $dbh->prepare("SELECT * FROM messages ORDER BY id DESC LIMIT :offset, :items_per_page");
$stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
$stmt->bindParam(':items_per_page', $items_per_page, PDO::PARAM_INT);
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    echo htmlspecialchars($row['name']) . ": " . htmlspecialchars($row['message']) . "<br>";
}
?>

このコードでは、URLのクエリパラメータから現在のページ番号を取得します。それに基づいてデータベースから取得する範囲を計算し、その範囲のメッセージだけを取得して表示します。

○サンプルコード7:検索機能

掲示板で特定のキーワードを含む投稿を見つけるためには、検索機能が必要となります。

この機能はユーザーが求める情報を素早く見つけることができるため、非常に有用です。

PHPを用いて検索機能を実装する方法を紹介します。

<?php
if (isset($_GET['keyword'])) {
    $keyword = $_GET['keyword'];
    $stmt = $dbh->prepare("SELECT * FROM messages WHERE message LIKE :keyword");
    $keyword = "%{$keyword}%";
    $stmt->bindParam(':keyword', $keyword);
    $stmt->execute();
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        echo htmlspecialchars($row['name']) . ": " . htmlspecialchars($row['message']) . "<br>";
    }
}
?>

このコードでは、URLのクエリパラメータから検索キーワードを取得し、そのキーワードを含むメッセージをデータベースから検索しています。

SQLのLIKE句を使ってキーワードに一致する部分を含むメッセージを見つけています。

●注意点と対処法

PHPを用いて掲示板を作成する際には、セキュリティにも注意を払う必要があります。

例えば、SQLインジェクションやXSSといった攻撃からサイトを守るためには、ユーザーからの入力をそのまま信用せず、適切なエスケープ処理やバリデーションを行うことが重要です。

●カスタマイズ方法

基本的な掲示板の機能ができたら、次は自分だけのオリジナルな機能を追加してみましょう。

ユーザー登録機能や画像投稿機能、リアルタイムで更新されるチャット機能など、掲示板に追加できる機能は無限大です。

まとめ

以上で、PHPを用いて掲示板を作成する方法を解説しました。

基本的な機能から応用的な機能、セキュリティ対策に至るまで、掲示板作成には様々な知識が求められます。

しかし、一つ一つの機能を自分の手で作り上げることで、プログラミングスキルの向上に繋がります。

ぜひこの記事を参考に、自分だけの掲示板を作成してみてください。