管理者画面の構成、流れ

1.管理者登録画面ではユーザーIDとパスワードをMySQLDBの管理者ユーザー登録用テーブルにフォーム入力のPOST
値を使って、PDOでINSERT文を使って保存する。パスワードはpassword_hushでhush化しておく。
ニックネームの入力フォームも用意し、ニックネームはユーザーIDを配列変数の添字にもつクッキーに保存する
登録画面からは操作画面や梅の木一般ページへのリンクは用意するか、他ページからの登録画面へのリンクは用意
しない事でセキュリティー的に分離する。


2.管理者操作画面はログイン画面、問い合わせ一覧画面及びその詳細内容画面、ログアウト画面の4つで構成されている。
ログイン成功時にセッションを作り、全ての画面でそのセッションを参照し、ログイン中は操作でき、ログインして
いない時は操作できないように項目を表示しないようにする。また、梅の木一般ページへのリンクも表示。


3.ログイン画面ではユーザーIDとパスワードをPDOでSELECT文で調べ、パスワードをpassword_verifyでチェックし
ログイン成功とし、セッションデータを作り、該当ユーザーIDニックネームと前回ログアウト時間がクッキーに
あれば表示する。
ログイン中の場合は現在ログイン中のニックネームのみを表示してユーザーIDは表示しない。(セキュリティー対策)


4.問い合わせ一覧画面では梅の木一般ページのお問い合わせフォーム画面から各ユーザーが登録した内容を保存した
MySQLDBの問い合わせ内容保存テーブルの各フィールドからPDOでSELECT文でデータを取得しLIMITで5件ずつ
一覧リストテーブルで表示する。前へボタン、次へボタンで他のリスト表示に切り替える。セッションで現在何番目
から表示してるかを保存し、同じ1つのPHPファイルで処理する。また次の1ページの1件目のレコードがあるかどうか
をチェックして次へボタンの表示/非表示を制御、前へボタンは1件目からの表示ページに戻った時非表示にする。
また最初のページにジャンプするボタンも用意。


5.問い合わせ詳細内容画面は問い合わせ一覧画面から各レコード毎に新規別画面として複数表示できるようにする。
なので画面を閉じるボタンも用意。問い合わせ一覧画面にはリストの一番右に詳細画面を開くリンクを用意し
そこをクリックして追加画面を表示すると同時にGETで選択したレコードのNoデータを送る。
なぜセッションでレコードのNoを管理しないかというと詳細内容画面は複数表示するので1つのセッション変数だと
常に最後に開いた新しい詳細内容画面のNoで更新されてしまうので、以前に表示した詳細内容画面の処理ができなく
なるため。


6.問い合わせ詳細内容画面は各画面につきGETで取得したNoの1件の問い合わせ内容の全てを表示する。
以後POSTによる表示切替時はGETしたNoをhiddenのinputに保存しておいてPOSTで渡して継続利用する。
問い合わせ内容はそのNoをWHEREで指定したSELECT文で取得するが、返信チェックフィールドが”未”の場合
下に返信用入力フォームを用意する。返信チェックフィールドが”済”の場合、DBから返信記録内容を表示する。
返信用入力の際は問い合わせ入力フォームと同様にJavaScript関数でチェックして確認画面を出すが、ここでは
subimitでPOSTによる表示切替を行わず、各フォームをリードオンリーにして背景色を替え、ボタンをinnerHTMLで
差し替えることで簡易確認画面方式を用いている。確認表示から送信ボタンを押すとsubmitし返信送信した事として
扱い返信内容をDBの返信記録フィールド等へPDOでUPDATE文で保存すると同時に返信チェックフィールドが”済”に
変更する。そして返信記録内容表示画面に切り替える。
確認表示から戻るボタンを押すと各フォームのリードオンリーを解除し背景色を戻し、修正できるようにして、ボタン
をinnerHTMLで元に戻す。(submitしないのでデータは保存されない)


7.ログアウト画面でログイン中はニックネームとログイン中であることとログアウトボタンを表示する。
ログアウト中はログインしていないことのみ表示して他は表示しない。
ログアウトボタンを押すとそのユーザーのログアウト時刻をクッキーに保存し、セッションデータとその
セッション関連クッキー等のデータを全て削除する。