掲示板の作り方について
- PHP の 掲示板 実験の2
- 実験 1 からの変更
- wodebb02
- 上記はLAN内の実験用です。 公開していません。
- まずは基本的な動作だけを押さえるためのスクリプト ソース
- 変更改造点
- なるべく html 文の中に php 文を書くようにする。
- 変数は 直接 受け取るのではなくスーパーグローバル配列 $_POST['変数名']
で受け取るようにする。
- 表示文字列の中に html tag があった場合 tag
として出力してしまうのを回避
- 改行コードの問題
- html Textarea で入力された 改行コード。
- 通常表示( html ) では改行と認識されない。
- また、ファイルへ出力するときは行の終わりとなってしまう。
対策 改行コードの変換
- ファイルへの入出力
ここの考え方。 いろいろな方法があるので悩むところです。
- 入力された データー をどんな形でファイルへ出力するのか? ファイルフォーマット
- いづれにせよ掲示板だから、過去のメッセージデーターを全て表示しなければならない。
- 表示する順番は? 最新データーが先頭にくるほうが見易いと思う。
- 案 1
-
- 入力されたデーターを一行として csv のカンマ区切りに加工する。
- ファイルの最後尾に追加する。
- 巻き戻し
- 一気に 配列に読み込む
- 配列を表示
しかしこの場合途中の一件のデーターを削除する場合はどうするのだろう?
- 案 2
-
- 一括してデーターを配列に読み込む
- "w" で fopen する。(書き込みモード)
- 入力されたデーターを一行として csv のカンマ区切りに加工する。
- 入力されたデーターを一行書き込む
- 配列データーを加工 (削除する場合メモリー中の操作で済む)
- 加工した配列データーを追加書き込みする。
これも一長一短あって、 2 の"w" でオープンしたとき、障害が発生したらデーターはすべて無くなってしまう可能性がある。
- 案 3
- ならば 1 と 2 をいっしょにして バックアップ(ジャーナル)を取る というのはどうだろう?
journal
- 入力されたデーターを一行として csv のカンマ区切りに加工する。
- ジャーナルファイルの最後尾に追加する。
- あとは 2 の方法で メッセージファイルに追加する。
- 削除されたデーターは削除区分を付けて ジャーナルファイルに出力する。
ジャーナルファイルのデーターは削除されないで削除区分が付いたデーターが追加される。
この方法ならば 障害が発生してメッセージファイルがダメージを受けても ジャーナルファイルから復元可能である。
2005/06/30 start ********* Last Update 2006/11/13 11:37 JST
(C) Y.Kondou,2005,2006 All Rights, Reserved.