[ 目次 ] HappyChamber
チュートリアル - ゲストブックを作る

 ここでは実際にオリジナル掲示板を1から作成する手順として、シンプルなゲストブックを作成してみます。


掲示板データベースの作成

 最初に、掲示板のデータ構造を決めて、掲示板データベースを作成しなければなりません。掲示板データベースは、データ構造定義ファイルを作成し、create.plを使って作成します。まず、HappyChamberのインストールディレクトリに移動して、以下のファイルをgbook.structというファイル名で作成してください。ここでは、NAME項目30バイト、MAIL項目30バイト、BODY項目1,000バイトでデータベースを作成します。

NAME 30
MAIL 30
BODY 1000

 次に、このデータ構造定義ファイルから、gbookという名前の掲示板データベースを作成します。以下のようにしてcreate.plを走らせます。Done.と表示されれば作成完了です。

./create.pl gbook gbook.struct


HCTファイルの作成

 いよいよ掲示板のデザインやユーザーインタフェースを決める、HCTファイルを作成します。HCTファイルは、chamber.confで指定したパスか、あるいはエキストラパス指定やCGIリダイレクションを使うのなら、ドキュメントルート以下の適当な場所に作成します。

 マニュアル通りの環境でインストールした方は、~/public_html/bbs/hct/に作成してください。ファイル名はgbook.hctです。

 1: <HTML>
 2: <HEAD><TITLE>ゲストブック</TITLE></HEAD>
 3: <BODY>
 4: <H3>ゲストブック</H3>
 5: 
 6: <#IF $[SUBMIT]>
 7:   記事を投稿しました (<&post(0, 20)>)
 8: <#/IF>
 9: 
10: <#IF ! $[SUBMIT]>
11: 
12:   <FORM METHOD="POST">
13:     <INPUT TYPE="hidden" NAME="template" VALUE="$[template]">
14:     <INPUT TYPE="hidden" NAME="board" VALUE="$[board]">
15:     名前:<INPUT TYPE="text" NAME="NAME">
16:     メール:<INPUT TYPE="text" NAME="MAIL"><BR>
17:     メッセージ:<BR><TEXTAREA NAME="BODY" COLS="50" ROWS="7"></TEXTAREA>
18:     <P><INPUT NAME="SUBMIT" TYPE="submit" VALUE="書き込む!">
19:   </FORM>
20: 
21:   <#ARTICLES ORDER="desc">
22:     <P><HR>No.#no at <? $Date = localtime($(#no)[date]) ?> $Date
23:     from $(#no)[NAME] <A HREF="mailto:$(#no)[MAIL]">$(#no)[MAIL]</A>
24:     <P><PRE>$(#no)[BODY]</PRE>
25:   <#/ARTICLES>
26: 
27: <#/IF>
28: 
39: <P><HR>
30: <I><A HREF="about.cgi">Powered by HappyChamber</A></I>
31: 
32: </BODY>
33: </HTML>
  • 6〜8行目(投稿処理)
     SUBMITボタンを押した後に処理されるブロックです。今回は、投稿処理ページと、記事表示ページを、ひとつのHCTファイルで行っています。ここで投稿処理と投稿した旨を示すメッセージを表示しています。<&〜>タグにより内部関数postを呼んでいます。サイクリック数は20、つまり記事数が20を越えると古い記事は自動的に削除されます。
  • 10〜27行目(記事表示)
     SUBMITでない場合に処理されるブロックです。投稿フォームと記事を表示します。
  • 12行目(FORMタグ)
     SUBMITボタンを押した後のアクションは、同一スクリプトなので、ACTION指定は省略しています。
  • 13行目(template指定)
     エキストラパス指定やCGIリダイレクションを使う場合は、不要です。
  • 15〜17行目(入力フォーム)
     データ構造定義で設定した項目名を使用することにより、post関数で投稿処理が行われます。
  • 21〜25行目(記事表示)
     降順に記事を表示します。<#ARTICLES> 〜 <#/ARTICLES>内では、#noは処理中の記事番号をあらわします。
  • 22行目(記事番号と投稿日時表示)
     Perl関数であるlocaltimeを使って、投稿日時データをローカル時間の文字列に変換しています。$(〜)[date]には記事の投稿日時がUNIX時間形式で格納されています。
  • 23行目〜24行目(投稿者名、メールアドレス、本文表示)
     例えばNAME項目に記録されたデータを表示するには、$(記事番号)[NAME]という変数を使用します。

起動

 例えば、以下のようなURL指定で起動します。(環境によって違います)

http://www.pixy.ne.jp/~miyamae/bbs/chamber.cgi?template=gbook.hct&board=gbook

http://www.pixy.ne.jp/~miyamae/bbs/gbook.hct?board=gbook


[ 目次 ]