#!/usr/local/bin/perl
require 'jcode.pl';
#========================================================
# keiji.cgi
# 日本語検索機能付き掲示板プログラム
# email: kakihana@seikeigeka.or.jp
# URL: http://www.kakihana.com/
#
# 1997/08/19 Ver. 1.0 (C)Takeshi KAKIHANA
# 1997/12/07 Ver. 1.1 Minor change
#========================================================
#========================================================
#----------------- ファイルを設置する -----------------
#--------------------------------------------------------
#
# Webページのホームディレクトリ(~/public_htmlなど)に
# 次の3つのファイルを設置し、パーミッションを()内の
# 数値に設定する。
#
# keiji.cgi(755) ・・・このプログラムファイル
# jcode.pl (755) ・・・漢字コード変換用プログラムファイル
# keiji.new(666) ・・・最初は空のファイル、メッセージが追加される
# keiji.old(666) ・・・最初は空のファイル、keiji.newから古いメッセージを移動する
#
#========================================================
#========================================================
#---------------- パラメータを設定する ----------------
#--------------------------------------------------------
#このプログラムの最初の行にはperlの置き場所を書く(telnetして'$which perl'で調べる)
$tail ="/bin/tail"; # tailの置き場所(telnetして'$which tail'で調べる)
$title ="カメレオン掲示板"; # タイトル文字
$wallpaper ="no"; # 背景に壁紙使用(yes/no)
$bg_paper ="image/back.gif"; # 壁紙のファイル名
$c_bg ="#ffffee"; # 色コード:背景
$c_text ="#000000"; # 色コード:文字
$c_title ="#e20072"; # 色コード:タイトル文字
$c_name ="#007700"; # 色コード:名前
$c_email ="#000088"; # 色コード:emailアドレス
$c_time ="#884400"; # 色コード:日付け・時刻
$c_ip ="#000000"; # 色コード:IPアドレス
$c_namebg ="#b9ffdc"; # 色コード:メッセージ名前部分の背景
$c_msgbg ="#f2fff8"; # 色コード:メッセージ本体の背景
$c_msg ="#000000"; # 色コード:メッセージ本体の文字
$c_key ="#ff0000"; # 色コード:検索キーワード
$c_warnbg ="#ffffdd"; # 色コード:入力ミス背景
$c_warntxt ="#ff0000"; # 色コード:入力ミス文字
# 背景色のデータ=(赤,緑,水,黄,紫,橙,桃)
@c_namebg =("#ffc3c3","#b9ffdc","#a8eeff","#fffb9f","#c6c6ff","#ffd9ab","#ffc6f6");
@c_msgbg =("#fff0f0","#f2fff8","#e1f9ff","#fffef5","#ebebff","#fff9f2","#fff8fd");
$max =30; # 標準表示メッセージ数
$new_date ="1997/08/27"; # 新メッセージファイル開始日
$tablewidth=600; # メッセージ表示欄の横幅(ドット数)
$keijicgi ="keiji.cgi"; # このプログラムのファイル名
$keijinew ="keiji.new"; # 新メッセージファイル名
$keijiold ="keiji.old"; # 旧メッセージファイル名
$url ="http://www.kakihana.com/$keijicgi"; # このプログラムのURL
#--------------------------------------------------------
#---------------------- ここまで ----------------------
#========================================================
#========== 現在時間(JST)を取得 ==========
@youbi_j=("Sun","Mon","Tue","Wed","Thu","Fri","Sat");
$ENV{'TZ'} = "JST-9";
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
$mon++;
$jst=sprintf("%02d/%02d/%02d(%s) %02d:%02d:%02d JST",$year,$mon,$mday,$youbi_j[$wday],$hour,$min,$sec);
#========== パラメータの解析 ==========
if ($ENV{'REQUEST_METHOD'} eq "POST"){
read(STDIN, $str, $ENV{'CONTENT_LENGTH'});
} else {
$str = $ENV{'QUERY_STRING'};
}
@pairs=split('&', $str);
$i=0;
foreach $pair (@pairs){
($item, $value)=split('=', $pair);
# 半角スペースの復元とデコード
$value=~ tr/+/ /;
$value=~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
# 改行コードの統一
$value=~ s/\r\n/\n/g;
$value=~ s/\r/\n/g;
# 末尾の改行コードの除去
$value=~ s/\n$//;
# 半角カナの変換と漢字コードの統一
&jcode'h2z_sjis(*value);
&jcode'convert(*value, 'sjis');
# 特殊文字の変換
$value=~ s/&/&/g;
$value=~ s/</g;
$value=~ s/>/>/g;
$item[$i]=$value;
$i++;
}
$command=$item[0]; # コマンド
$name =$item[1]; # 名前
$email =$item[2]; # emailアドレス
$message=$item[3]; # メッセージ
# messageのみ、途中の改行コードを
に変換
$message=~ s/\n/
/g;
#==================================
#========== 掲示板の表示 ==========
#==================================
if(($command eq "") || ($command eq "all") || ($command eq "old") || ($command eq "search")){
#----- HTMLファイル出力開始 -----
print "Content-type: text/html\n\n";
#----- 検索時のキーワード入力もれ -----
if(($command eq "search") && ($message eq "")){
print <
入力ミスです!
入力ミスです!
キーワードが入力されていません。
[←戻る]ボタンで戻ってください。