このページを読む前に
はじめてホームページを作ったばかりの人向けのアドバイスも読んで必須設定項目に必要な変更をします。スクリプトの改造は自由ですが、まず変更を加えないCGIが動作することを確認してからにしましょう。第一行目(Perlのパス)を必ずプロバイダの指示に従って変更することやsendmailのパス、メールアドレス、必要なら文字コードの指定$ccodeやディレクトリの指定$basedirもして下さい。

好みに応じて# 基本設定 #の他の部分やHTMLの部分に手を加えることもできます。基本設定とHTML文を参照。

またメールによる新規投稿通知機能も改造可能です。メール送信と自家製サーバ構築を参照。

入力データの取り扱い
さて、いよいよ本物のPerlスクリプトの改造です。
########
# 主文 #
########
     :
     :
### データ整形 ###
$value =~ s/%0D%0A/<br>/g;
$value =~ s/%0A/<br>/g;
$value =~ s/%0D/<br>/g;
$value =~ s/%09/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/g;
$value =~ s/%3C/&lt;/g;
$value =~ s/%3E/&gt;/g;
上の三行は改行コード(ウィンドウズはLF+CR、UNIXはLF、マックはCRを使用)を改行を示すHTMLタグ <BR> に変換するものです。DMBは一件の書込みを一行として処理するようになっているので何らかの変換は必要ですが、これらの行を$value =~ s/%0D%0A/ /g;等に変更すると改行がスペースに変換されます。

真ん中の$value =~ s/%09/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/g;はタブをスペース5つ分に変換します。HTMLは通常のタブを理解することが出来ません。またタブはDMBのスクリプト内部で特殊な意味に使われています。したがってこの変換も技術的な理由から必要ですが、スペース5つ分が気に入らなければ$value =~ s/%09/ /g;としてスペース一つに変換することも出来ます。

DoubleMessageBoard日本語版は投稿中のHTMLタグを全て無効にします。もしHTMLを有効にしたい時は最後の二行
$value =~ s/%3C/&lt;/g;

$value =~ s/%3E/&gt;/g;
を削除してください。ただしHTMLを有効にすることが如何に危険なことであるかを十分に理解し、自分で必要な措置を取った上で行って下さい。

投稿時刻の記録
DMB日本語版は出荷時に、ゲストが投稿を行った時刻を現地時刻で記録するように設定されています。
##############
# 投稿受付け #
##############
     :
     :
$posted = localtime(time);
ところがこの「現地」というのはゲストの住む現地でもあなたの住む現地でもなく、サーバの置いてある国のことです。したがってあなたの住んでいる国とは違う時刻が表示されるかも知れません。その場合上のスクリプトを$posted = gmtime(time);と変更すれば時刻として国際標準時が用いられます。また日本は国際標準時より九時間時計が進んでいますから(60 x 60 x 9) = 32400秒進んでいるとして$posted = gmtime(time + 32400);とすると日本時間になります。

ゲストのメールアドレス
メールアドレスの表示方法も変更可能です。
##############
# 投稿受付け #
##############
     :
     :
if ($data{'email'}) {$data{'name'} = "<a href=\"mailto:$data{'email'}\">$data{'name'}</a>";}
この部分は、もし$data{'email'}つまりゲストのメールアドレスが書込まれているならば、ゲストの名前つまり$data{'name'}にmailto:のリンクをつける、ということです。"\"の使い分けに注意しましょう。これを
##############
# 投稿受付け #
##############
     :
     :
if ($data{'email'}) {$data{'email'} = "<a href=\"mailto:$data{'email'}\">$data{'email'}</a>";}
と変更すれば$data{'email'}$data{'name'}の両方を### 新記事 ###のどこかに配置することで名前とメールが別々のものとして扱われます。

書込み禁止
ゲストのIPアドレスが分かっている場合、$ENV{'REMOTE_ADDR'}を利用して書込みを禁止することが出来ます。またブラウザ情報を$ENV{'HTTP_USER_AGENT'}で取得することも出来ます。特定IPからの書込みを禁止するには# 基本設定 #
#!/usr/bin/perl

############
# 基本設定 #
############
の直前にでも
#!/usr/bin/perl

if ($ENV{'REMOTE_ADDR'} eq '123.456.78.90') {die "いや〜ん、書込まないで〜";}

############
# 基本設定 #
############
と一行追加します。もちろん123.456.78.90のところは禁止したいIPアドレスにしますし、いや〜ん、書込まないで〜も何かもっと適当な言葉遣いにしましょう。

Click Here