2.アイコンつき掲示板に持ち込みアイコンをつけよう

アイコンつき掲示板が最近はやっています。
しかしアイコンは設置者が用意したものしか使えないことが多いです。
そこで自分で作ったアイコンも使えるようにする改造をしてみようと思います。

警告:
ある程度知識がないと改造できないので
perlの基礎と掲示板動作の基礎や使っている掲示板についてしっかり勉強しましょう。
今回はこのとおりなのでCGIの動作テストは一切行っていません。
(なんたって実験に使う掲示板スクリプト自体がないので(^^;;;)

作業工程
1.データファイルの解析
掲示板のログデータを解析しましょう。

例:bbs.dat
1,,2001/08/13 15:00:00,A,a@i.com,http://www.i.com/~i/,1,やっほー,やっほー、Aです。,
2,1,2001/08/13 17:30:27,B,bz@cd.com,http://www.cd.com/home/bz/,2,RE:やっほー,Aさん元気してた?,
この場合「,」を区切りとして
記事番号,親記事番号,日付,名前,メールアドレス,URL,アイコン番号,題名,本文,
となっています。

このデータを使った掲示板の表示はたとえばこんな感じになります。
リンクははらないので多少違います。また表示専用サンプルのため投稿もできません(あたりまえ)
例:bbs.cgi
掲示板

 
お名前
メールアドレス
URL
アイコン
題名
本文


[1]Aさん 題名:やっほー 2001/08/13 15:00:00
MAIL:a@i.com
URL:http://www.i.com/~i/

やっほー、Aです。


[2]Bさん 題名:RE:やっほー 2001/08/13 17:30:27
MAIL:bz@cd.com
URL:http://www.cd.com/home/bz/

Aさん元気してた?


このデータに持ち込みアイコンのURLを付け加えます。
1,,2001/08/13 15:00:00,A,a@i.com,http://www.i.com/~i/,1,やっほー,やっほー、Aです。,http://www.i.com/i/a.gif,
記事番号,親記事番号,日付,名前,メールアドレス,URL,アイコン番号,題名,本文,持ち込みアイコンURL,
となります。

まずは持ち込みアイコンの表示ができるように改造します。
例:bbs.cgiの一部
A,改造前
foreach $line (@data){
($num,$pnum,$kdate,$name,$mail,$url,$icon,$subj,$comm) = split(/\,/,$line);
-中略-
print "<img src=$icons[$icon]>";
B,改造後
foreach $line (@data){
($num,$pnum,$kdate,$name,$mail,$url,$icon,$subj,$comm,$micon) = split(/\,/,$line);
-中略-
if ($micon ne ""){print "<img src=$micon>";}
else {print "<img src=$icons[$icon]>";}
見ていただければわかりますけど持ち込みアイコンがある場合は
それを表示してない場合は設置者が用意したアイコンを表示させています。

次に持ち込みアイコン登録の改造をします。
A,改造前
書き込みデータ追加のところ
$ndata = "$num\,$pnum\,$date\,$name\,$mail\,$url\,$icon\,$subj\,$comm\,\n";
push (@data , $nline);
&save;
B,改造後
フォーム処理のところ
$micon   = $FORM{'micon'};

拡張子チェッカー(おまけ)
if ($micon ne ""){&extcheck;}

sub extcheck{
$extf=0;
@exts =("jpg","gif","png");
$mext = substr($micon,-3,3);
foreach (@exts) {
if ($micon =~ /$_/i){$extf++;}
}
if ($extf == 0){$micon = "";}
}

書き込みデータ追加のところ
$ndata = "$num\,$pnum\,$date\,$name\,$mail\,$url\,$icon\,$subj\,$comm\,$micon\,\n";
push (@data , $nline);
&save;

拡張子チェッカーでは拡張子がjpg,gif,png以外の拡張子ならば
持ち込みアイコンのURLを無効にしています。

フォームにも持ち込みアイコンのURL欄を追加しておきましょう。

これで改造は終わりです。
って終わってなかったらどうしよう?(おいっ
その辺は自分でどうにかしてください。

え゛っ?解説しているひまがあったら改造済みのスクリプト公開しろって?
何をおっしゃるウサギさん。自分で改造するから楽しいんですよー(^。^)v

もどる