最終更新日:
公開日:
ワークショップ
ひと言掲示板を作る(15)
管理ページを作成する
「ひと言掲示板」に書き込まれた内容を管理するためのページを作成していきます。
この記事のポイント
- 投稿されたデータを管理するための機能を作る
- 管理者のログイン情報もセッションで管理する
目次
投稿を管理するためのページ
前回は掲示板にセッションを導入しました。
今回からは投稿されたメッセージを管理するためのページを作成していきます。
掲示板を公開して運用してみると、様々な人が色々な書き込みを行います。
運営に沿った投稿もあれば、そうでないものも集まってしまうのが現実的なところ。
そこで、特定の投稿を修正したり、時には不適切な投稿を削除する運営専用ページがあると非常に便利です。
今回から作成していく管理ページは次のようなページになります。
通常のページに似ていますが、投稿データをダウンロードするための「ダウンロード」ボタンや投稿毎に「編集」「削除」のリンクを設置します。
管理ページでできることをまとめると次の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」を開いて、次の箇所を削除してください。
admin.php
<?php
---- 省略 ----
// データベースに接続
try {
$option = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::MYSQL_ATTR_MULTI_STATEMENTS => false
);
$pdo = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option);
} catch(PDOException $e) {
// 接続エラーのときエラー内容を取得する
$error_message[] = $e->getMessage();
}
if( !empty($_POST['btn_submit']) ) {
////////////////////////////////
// if文の中のコードは全て削除
////////////////////////////////
}
---- 省略 ----
続いて、ページタイトルに「管理ページ」と表示するようにtitle要素とh1要素に追記します。
admin.php
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>ひと言掲示板 管理ページ</title>
---- 省略 ----
<body>
<h1>ひと言掲示板 管理ページ</h1>
-- 省略 --
引き続き、不要な部分を削除していきます。
次の赤いコードの部分を削除してください。
admin.php
<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; ?>
---- 省略 ----
最後に、投稿メッセージの表示部分だけ残す形にしていきます。
投稿を入力するフォーム部分と、区切り線(hr要素)を削除してください。
admin.php
---- 省略 ----
<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 htmlspecialchars( $_SESSION['view_name'], ENT_QUOTES, 'UTF-8'); } ?>">
</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 htmlspecialchars($value['view_name'], ENT_QUOTES, 'UTF-8'); ?></h2>
<time><?php echo date('Y年m月d日 H:i', strtotime($value['post_date'])); ?></time>
</div>
<p><?php echo nl2br( htmlspecialchars( $value['message'], ENT_QUOTES, 'UTF-8') ); ?></p>
</article>
<?php } ?>
<?php } ?>
</section>
</body>
</html>
投稿を書き込むエリアを削除したので、ブラウザで「admin.php」を表示してみると今まで投稿されたメッセージのみが表示される状態です。
以上で管理ページを作成していくための用意が完了しました。
次回はログインページを作成していきましょう。
今回作成したコード:Github
こちらの記事は役に立ちましたか?
コメントありがとうございます!
運営の参考にさせていただきます。
記事一覧
- ひと言掲示板を作る(1) ひと言掲示板を作る
- ひと言掲示板を作る(2) メッセージの入力フォームを作る
- ひと言掲示板を作る(3) メッセージのデータを受け取る
- ひと言掲示板を作る(4) ファイルにデータを保存する
- ひと言掲示板を作る(5) ファイルからデータを読み込む
- ひと言掲示板を作る(6) 投稿完了メッセージを表示する
- ひと言掲示板を作る(7) 投稿の未入力バリデーションをつける
- ひと言掲示板を作る(8) 投稿されたデータをサニタイズする
- ひと言掲示板を作る(9) 投稿データの保存にデータベースを使う
- ひと言掲示板を作る(10) 掲示板のデータベースとテーブルを作成する
- ひと言掲示板を作る(11) 投稿データをデータベースに登録する
- ひと言掲示板を作る(12) データベースからデータを取得する
- ひと言掲示板を作る(13) コードを整理する
- ひと言掲示板を作る(14) セッションで表示名の入力を省略する
- ひと言掲示板を作る(15) 管理ページを作成する
- ひと言掲示板を作る(16) ログインページを作る
- ひと言掲示板を作る(17) 投稿データをCSV形式でダウンロードする
- ひと言掲示板を作る(18) 投稿データをダウンロードする件数を指定する
- ひと言掲示板を作る(19) 投稿メッセージの編集ページを作る
- ひと言掲示板を作る(20) メッセージを編集する機能を実装する
- ひと言掲示板を作る(21) 投稿メッセージの削除ページを作る
- ひと言掲示板を作る(22) 管理ページにログアウトを実装する
- ひと言掲示板を作る(23) リロードによる多重投稿を防止する
- ひと言掲示板を作る(24) 投稿に文字数制限を設定する
ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。