#! /opt/gnu/bin/perl ;# ↑このパスはプロバイダによって違うので調べて設定する ;# (これはこのスクリプトの最初の1行になければならず、それより上に空行があってもいけません。) ;# (この設定が必要ないサーバもあります。一般的な場合を想定して解説を入れています。) ;# (他に、プロバイダからアナウンスされている情報を十分理解しておいてください。) ;# ;# FBBS ver 1.0 based on ;# 簡易BBS version 7.5(フリーソフト) ;# ;# Script written by Kazu.Y ;# Created on: 02/05/96 ;# Last Modified on: 11/06/97 ;# I can be reached at: rescue@ask.or.jp ;# Scripts Found at: http://www.ask.or.jp/~rescue/cgitips/ ;# Script moditied by T.Tajima (takeshi@comp.cs.gunma-u.ac.jp) ;# ;# <利用規定の抜粋> ;# 1.このスクリプトは自分で使うために承諾なしに自由に改造することができます。 ;# 2.改造の有無にかかわらず、このスクリプトを再配布することはできません。 ;# 3.このシステムを有償で他人に設置してあげたりする行為は無断ではできません。 ########################################################################################### # # 基本構成(初期設定はこの構成を前提に解説します) # # public_html(ホームページディレクトリ) # | # |-- cgi-bin(任意のディレクトリ) # | # |-- jcode.pl (755) # |-- fbbs.cgi (755) # |-- fbbs.dat (666) # |-- pic (755) # |-- pic-back.gif (バックグランド) # |-- menu-*.gif (メニュー用) # |-- m*.gif (FACE画像:男) # |-- f*.gif (FACE画像:女) # |-- t{u,d}{l,r}.gif (吹き出し枠) # # ・この minibbs.pl は minibbs.cgi にファイル名を変更する # ・minibbs.dat は中身が空っぽのファイルをパソコン上で作成して転送する # ・このシステムに必要な3つのファイルを同じ場所に設置する # ・( )内はパーミッッション値 # ・jcode.plは中身を全くいじらずにそのままアスキー転送する # ・jcode.plはjperlでは利用できないので注意すること # ・これら3つのファイルはアスキーモードで取り扱う(転送)すること # ########################################################################################### #----------------# # 初期設定 # #----------------# #--- 必ずあなたの環境に合わせて書き替える項目 --------------------------------------------# # 削除モード移行パスワードの設定(''内に任意のパスワードを記述する) $password = 'password'; # 掲示板の名前 $title = 'FBBS ver 1.0'; # 画像ディレクトリ $dir = './pic'; # 画像縦幅 $fwidth = 104; # 画像横幅 $fheight = 128; # BBS横幅 $tablewidth = 600; # このスクリプトをURLで設定 $reload = 'http://yourdomain/cgi/fbbs.cgi'; # 画面の「終了」ボタンの表示先をURLで設定 $modoru = 'http://yourdomain/yourpage.html'; #--- 必要に応じて設定する項目 ------------------------------------------------------------# # 文字色や背景などの設定(通常の
タグ) # 題名と投稿者色はスクリプト内のタグを探して設定してください。 $body = ""; # タグを使えるようにするかどうかの設定 # については入力フォームが用意してあるので、いたずらやタグの # 閉じ忘れ等による混乱を避けるためにできるだけ使えないようにしておくことをお勧めします。 # 使える:1 使えない:0 $tag = 0; # 1ページに表示する件数 $def = 10; # 書き込み件数の最大登録数の設定です。この件数を超えると、古いものから削除されていきます。 # ページ処理機能が付きましたので、この件数を大きくしても一度に表示される記事数は限定されます。 # 記録されたファイルの巨大化を防止する為に、ある程度の件数で自動削除されるようにします。 $max = '50'; # 日本語コード変換ライブラリ # この jcode.pl を minibbs.cgi と違うディレクトリに設置する場合は相対的に設定すること require './jcode.pl'; # 内容が書き込まれる記録ファイルのパスを設定 # この minibbs.dat を minibbs.cgi と違うディレクトリに設置する場合は相対的に設定すること $file = './fbbs.dat'; # 海外サーバ等で時差が生じる場合は修正します # 海外時間に+9時間する場合 = localtime(time + 9*60*60); # 海外時間に−9時間する場合 = localtime(time - 9*60*60); # (参考)timeには1970年からの秒数が入っています ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); # クッキーの消化設定 # 最終書き込みから 30日後 30*24*60*60 # 1日後 24*60*60 # 10時間後 10*60*60 $ENV{'TZ'} = "GMT"; # 国際標準時を取得する ($secg,$ming,$hourg,$mdayg,$mong,$yearg,$wdayg,$ydayg,$isdstg) = localtime(time + 30*24*60*60); # 入力形式の設定 標準入力:post その他:get # 投稿ボタンを押して Method not implemented.. というエラーが出る場合は get で試すこと $method = 'post'; ########################################################################################### # # ・記録ファイルには処理の都合上特殊コードが記録されますので、直接編集はできません。 # ・スクリプトの中身を書き替える場合は、perlやCGIやHTMLなどのそれなりの知識が必要です。 # ・設置に関する質問はチャレンジCGI専用掲示板をご利用ください。改造の質問は受けません。 # http://www2r.meshnet.or.jp/~rescue/webboard/ # ########################################################################################### # 上記のlocaltimeで取得した$monには0から11までの数字が入るので修正処理 $month = ($mon + 1); # 時刻を2桁に統一する処理(削除処理に関係するので書き替えないこと) if ($month < 10) { $month = "0$month"; } if ($mday < 10) { $mday = "0$mday"; } if ($sec < 10) { $sec = "0$sec"; } if ($min < 10) { $min = "0$min"; } if ($hour < 10) { $hour = "0$hour"; } # 曜日変換処理 # $wdayには0から6までの数字が入り曜日に対応している $y0="日"; $y1="月"; $y2="火"; $y3="水"; $y4="木"; $y5="金"; $y6="土"; $youbi = ($y0,$y1,$y2,$y3,$y4,$y5,$y6) [$wday]; # 時刻フォーマット(削除処理に関係するので書き替えないこと) $date_now = "$month月$mday日($youbi)$hour時$min分$sec秒"; # フォーム入力されたデータを$bufferに格納する(getかpostかによって取得方法が異なる) if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; } # $bufferに格納されたFORM形式のデータを取り出す @pairs = split(/&/,$buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; # 処理の都合上の処理 $value =~ s/\n//g; # 改行文字はデータの記録に影響があるので消去する if ($tag) { # 掲示板に書き込まれたくないタグを設定する(タグが使える場合に有効) if ($value =~ /$title \n\n"; # フォーム画面出力 print " \n"; print "\n\n";
#--- 記録記事の出力 ----------------------------------#
# 記録ファイルを読み出しオープンして、配列<@lines>に格納する
if (!open(DB,"$file")) { &error(0); }
@lines = \n";
#改行コードを ";
# URLが記録されているデータにはリンクを付ける
if ($hpage ne '') {
print "$hpage \n";
}
print " \n\n";
}
#--- 改ページ処理 ------------------------------------#
$page_next = $page_end + 1;
$i = $page + 1; $j = $page_end + 1;
if ($page_end ne $accesses) {
print " |
\n";
print "エラー:\n"; print "$error_msg\n"; print "[戻る] |
\n";
print "削除モード[戻る] \n"; print " \n"; print " |