PHPプログラミング

ワークショップ

ひと言掲示板を作る

管理ページを作成する

「ひと言掲示板」に書き込まれた内容を管理するためのページを作成していきます。

この記事のポイント

  • 投稿されたデータを管理するための機能を作る
  • 管理者のログイン情報もセッションで管理する

目次

投稿を管理するためのページ

前回は掲示板にセッションを導入しました。
今回からは投稿されたメッセージを管理するためのページを作成していきます。

掲示板を公開して運用してみると、様々な人が色々な書き込みを行います。
運営に沿った投稿もあれば、そうでないものも集まってしまうのが現実的なところ。
そこで、特定の投稿を修正したり、時には不適切な投稿を削除する運営専用ページがあると非常に便利です。

今回から作成していく管理ページは次のようなページになります。

管理ページ

通常のページに似ていますが、投稿データをダウンロードするための「ダウンロード」ボタンや投稿毎に「編集」「削除」のリンクを設置します。
管理ページでできることをまとめると次の4つです。

  • 投稿の編集
  • 投稿の削除
  • 投稿データをCSV形式でダウンロード
  • ダウンロード件数の指定

また、管理ページは運営者のみアクセスするため、次のようなログインページからログインするようにします。

ログインページ

「ひと言掲示板を作る」の概要については「ひと言掲示板を作る」をご覧ください。
デモはこちら

前回までに作成したコードはこちら:Github

管理ページのファイル構成

管理ページで用意する機能は上記の通りですが、次のようなファイル構成で作成していきます。

ファイル構成のイメージ

管理ページの入り口を「admin.php」とし、そこから投稿を編集する「edit.php」、投稿を削除する「delete.php」、投稿データをダウンロードする「download.php」に移動する形にします。

管理ページのログインページは「admin.php」の中に作り、ログインセッションの有無でログイン・管理ページのどちらを表示するか判断するようにします。

管理ページの表示の仕組み

最後にログアウト機能もこちらのページに作成していきます。

管理ページのベースを作成

まずは管理ページのベースとなる「admin.php」を作成しましょう。
作成といっても0から作るわけではなく、今まで使ってきた「index.php」を複製して作っていきます。
index.php」をコピーし、ファイル名を「admin.php」に変更してください。

ファイル一覧の例

index.php
admin.php ←複製して作成

続いて「admin.php」を開いて、次の箇所を削除してください。

コード例

<?php

-- 省略 --

// 変数の初期化
$now_date = null;
$data = null;
$file_handle = null;
$split_data = null;
$message = array();
$message_array = array();
$success_message = null;
$error_message = array();
$clean = array();

session_start();

if( !empty($_POST['btn_submit']) ) {

	////////////////////////////////
	// if文の中のコードは全て削除
	////////////////////////////////
}

-- 省略 --

続いて、ページタイトルに「管理ページ」と表示するように、title要素h1要素に追記します。

コード例

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>ひと言掲示板 管理ページ</title>

-- 省略 --

<body>
<h1>ひと言掲示板 管理ページ</h1>

-- 省略 --

引き続き、不要な部分を削除していきます。
次の赤いコードの部分を削除してください。

コード例

<body>
<h1>ひと言掲示板 管理ページ</h1>
<?php if( !empty($success_message) ): ?>
    <p class="success_message"><?php echo $success_message; ?></p>
<?php endif; ?>
<?php if( !empty($error_message) ): ?>
    <ul class="error_message">
		<?php foreach( $error_message as $value ): ?>
            <li>・<?php echo $value; ?></li>
		<?php endforeach; ?>
    </ul>
<?php endif; ?>

-- 省略 --

最後に、投稿メッセージの表示部分だけ残す形にしていきます。

コード例


-- 省略 --

<body>
<h1>ひと言掲示板 管理ページ</h1>
<?php if( !empty($error_message) ): ?>
    <ul class="error_message">
		<?php foreach( $error_message as $value ): ?>
            <li>・<?php echo $value; ?></li>
		<?php endforeach; ?>
    </ul>
<?php endif; ?>
<form method="post">
	<div>
		<label for="view_name">表示名</label>
		<input id="view_name" type="text" name="view_name" value="<?php if( !empty($_SESSION['view_name']) ){ echo $_SESSION['view_name']; } ?>">
	</div>
	<div>
		<label for="message">ひと言メッセージ</label>
		<textarea id="message" name="message"></textarea>
	</div>
	<input type="submit" name="btn_submit" value="書き込む">
</form>
<hr>
<section>
<?php if( !empty($message_array) ){ ?>
<?php foreach( $message_array as $value ){ ?>
<article>
    <div class="info">
        <h2><?php echo $value['view_name']; ?></h2>
        <time><?php echo date('Y年m月d日 H:i', strtotime($value['post_date'])); ?></time>
    </div>
    <p><?php echo $value['message']; ?></p>
</article>
<?php } ?>
<?php } ?>
</section>
</body>
</html>

投稿を書き込むエリアを削除したので、現状は「admin.php」を表示すると今まで投稿されたメッセージのみが表示されます。

admin.phpの表示例

以上で管理ページを作成していくための用意が完了しました。
次回はログインページを作成していきましょう。

今回作成したコード:Github

こちらの記事は役に立ちましたか?

ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。

ありがとうございます。
コメントを送信しました。