#!/usr/local/bin/perl #↑あなたのブロバイダのCGIパスを記述してください。 #==================================================================# # Anthologys v2.5e # # Script by YASUU!! 2005/3/13 # # Ver.Mini Arrange by ZERO 2007/10/27 # #==================================================================# #======================あなたが設定する項目========================# #このCGI ScriptのURL指定(通常はこのまま) $reload = './mini3.cgi'; #HomepageのURL指定(相対パス・絶対パス http://〜 のどちらでも良い) $home = ''; #CGIのタイトル $title = 'Anthologys 詩歌集'; #----------------最初に表示されるページの設定-----------------# #BODYタグ設定(リンク色はBODYタグとは別々に設定) $body = '
'; $link_c = '#9696ff'; #リンク色 $vlink_c = '#5599aa'; #既読リンク色 $alink_c = '#0099ff'; #選択リンク色 $olink = '#0099ff'; #オンマウス時のリンク色 #タイトルにイメージを使用する場合、画像のURLを指定 $title_img = ''; #タイトル文字表示定義(上の設定でイメージを使用しなかった場合) $title_def = ''; #作品タイトル等の強調フォントスタイル $font = 'times new roman'; $size{'font'} = '9pt'; #基本文字サイズ (全てのページに反映) $size{'table'} = '9pt'; #基本テーブルの文字サイズ (全てのページに反映) $table{'all_size'} = '750'; #投稿作品一覧全体の横の長さ $table{'tit_size'} = '40%'; #作品名一覧の横の長さ $table{'all_bg'} = '#222222'; #投稿作品一覧枠の全体背景 $table{'all_bord'} = '#333333'; #枠の色 $table{'bstyle'} = 'groove'; #枠の形状('none','solid','double','groove','dotted'など) $table{'up_bg'} = '#333333'; #投稿作品一覧の表題の背景 $table{'up_font'} = '#ffffff'; #投稿作品一覧の表題内の文字色 $table{'down_bg'} = '#000000'; #投稿作品一覧リストの背景 $table{'down_font'} = '#cccccc'; #投稿作品一覧リスト内の文字色 $form{'bg'} = '#000000'; #フォームの背景 $form{'font'} = '#00ee00'; #フォーム内の文字色 $form{'bord'} = '#666666'; #フォームの枠色 $align = 'center'; #ページを左揃えにする場合はleft,中央ぞろえにする場合はcenterに $src = ''; #一覧の作者欄に作者検索へのリンク (1=貼る 空白=貼らない) #-------------------------投稿者背景の設定---------------------------# $haik = '';#背景を統一する場合は 1 を消す(※この場合文字色も統一) #投稿FORMに32×32サイズでアイコンが表示されるので、正方形の画像を使用 #---'',で区切って画像URLを指定することにより、何個も追加できます。--# @IMG = ( './bg_a.gif', './bg_b.gif', './bg_c.gif', './bg_d.gif', './bg_e.gif', './bg_f.gif', './bg_g.gif', './bg_h.gif', ''); #-----------------------投稿者文字色の設定--------------------------# $moir = '';#文字色を統一する場合は 1 を消す @FONT = ( '#000000', '#0000A0', '#800040', '#E10000', '#005100', '#4F4F4F', '#575700', '#B500B5', '#5400A8', '#003377', ''); #-----------------------作品閲覧ページの設定--------------------------# #作品閲覧時のタイトルバーの表示文字(1=作品の前書き,空白=作品の題名[前書き機能OFF]) $sakutit = '1'; #基本背景色(背景を統一しない場合。BODYタグと同じ背景色を推奨) $bg_c = '#212121'; #基本文字色(背景を統一しない場合。BODYタグと同じ文字色を推奨) $txt_c = '#999999'; #作品・感想閲覧時の各罫線(横線)の色 $hr_c ='#444444'; #各種テーブルの横幅 $table{'s_size'} = '90%'; #作品閲覧時のテーブル幅 $table{'r_size'} = '90%'; #感想欄のテーブル幅 #各種文字の大きさ $size{'s_tit'} = '15pt'; #作品閲覧時のタイトルの文字サイズ $size{'s_ar'} = '10pt'; #作品の作者、日付記述等の文字サイズ $size{'s_font'} = '12pt'; #作品の内容の文字サイズ $size{'s_come'} = '10pt'; #作者からのメッセージの文字サイズ $size{'r_tit'} = '10pt'; #感想ページのタイトルの文字サイズ $size{'r_come'} = '10pt'; #感想記事の上欄の文字サイズ $size{'r_come2'} = '10pt'; #感想の文字サイズ #------------説明書などの各ページのレイアウト設定----------------# $size{'exp'} = '9pt'; #説明書の基本文字サイズ $size{'exp2'} = '11pt'; #説明書の見出し文字サイズ $table{'exp_size'} = '600'; #説明書のテーブル幅 $table{'exp2_size'} = '90%'; #説明書の見出し幅 $table{'serch_size'} = '50%'; #検索テーブル幅 $table{'del_size'} = '95%'; #作品管理のテーブル幅 $table{'del_t_size'} = '150'; #作品管理の作品名欄の幅 $table{'del2_size'} = '85%'; #感想管理のテーブル幅 $table{'del2_t_size'} = '20%'; #感想管理の記事NO.欄の幅 $table{'del2_t2_size'} = '30%'; #感想管理の登録日欄の幅 #-----------------------その他の重要な設定--------------------------# $pass = 'abc123'; #管理者passwordの設定 $cnts = '1'; #閲覧数カウント (1=IP解析をする 2=IP解析しない 空白=表示しない) $cntdir = './cnt/'; #カウント数のログを保存するディレクトリ $byte = '1'; #作品の長さ測定 (1=10KB以上で略記 2=BYTE数をそのまま表示 空白=表示しない) $hos = '1'; #ホスト表示 (1=ID化する 2=ID化しない 空白=表示しない) $trips = '1'; #トリップ機能を使用する場合は 1 を入れる $iplim = ''; #作品の作者からの感想投稿を制限する場合は 1 を入れる $iplim2 = ''; #同じ人の感想の連続投稿を制限する場合は 1 を入れる #海外の自動投稿プログラム対策 $eng = '1'; #英数字だけの投稿を制限する場合は 1 を入れる $urlmax = '10'; #内容に記述できるURLの数( 0 にすると制限なし) $encode = '1'; #「SHIFT-JIS」エンコード以外の投稿を制限する場合は 1 を入れる $list = '30'; #TOPpage 1pageに表示する記事数一覧のリスト数設定 $list2 = '5'; #1pageに表示する感想記事数一覧のリスト数設定 $list3 = '10240'; #閲覧時の作品分割設定 (数字=1pageに表示するbyte数[標準は10KB] 空白=分割機能OFF) $max = '100'; #最大記録保持数設定 この件数に達すると、ログのbackupを作成します(backupを設定した場合。) $max2 = '50'; #感想ログ最大記録数設定 $n_view = '3'; #NEW,UPの表示期間 (日) ( 0 を指定すると表示しなくなる) $n_img = ''; #NEWを画像にする場合のパス(空にするとNEW!!という文字が表示されます。) $u_img = ''; #同じくUPの画像パス $rom = ''; #一般投稿を募集しない場合は 1 を入れる(あなただけが投稿できるようになる) #一覧の表題の記述設定(左の欄から順番に記述) #(※閲覧数や文字数などを表示しない設定でも","は削除しないこと) @tab = ("Title","Name","最終更新","閲覧数","Byte","Res","Point"); #並び替えフォームの記述設定(※上と同様","は残しておく) @sort = ("登録順","更新順","作品名順","作者名順","閲覧数順","文字数順","返信数順","点数順"); #禁止タグ設定(","で区切って追加) @tag = ("table","meta","!--","form","embed","script","frame"); #作品削除ログを保存するディレクトリ(管理モード時のみ閲覧可) $del_dir = './del/'; #削除ログ最大記録数設定 $del_max = '100'; #作品の連続投稿の禁止期間 (左から順に'日','時','分','秒'。標準は5分) $wait = '00'.'00'.'05'.'00'; #修正時に、記事を最上欄に上げるかどうかの設定 (1=投稿者選択 2=上げる 空白=そのまま) $sel = '1'; #作品記事 $sel2 = '1'; #感想記事 #------------------------ログの設定-------------------------------# $backup = '1'; #バックアップをしない場合は1を削除 $backname = '作品集その'; #backupファイルへのリンク見出し #ログ、バックアップログを保存するディレクトリ(Anthology.cgiと同じディレクトリ内 同じディレクトリに設置できない場合は../log/というようにcgi-bin横に設定 パーミッション777 $dir = './log/'; #------------------------sendmailの設定-----------------------------# $mailsend = ''; #mailを受け取る場合は 1 を入れる $mailto = ''; #管理人のメールアドレス $sendmail = '/usr/sbin/sendmail'; #sendmailのパス プロバイダに確認すること $webmaster = ''; #管理人の名前 #---------------ログの消失を防ぐためロックを設定する--------------# $lockdir = './lock/'; #ロックファイルを生成するディレクトリ(パーミッション777) $lock = '1'; #ロック方法(1=symlink方式,2=open式,0=設定なし) #-------------------------感想記事の設定----------------------------# $res = '1'; #感想投稿をしない場合は 1 を消す $resdir = './res/'; #感想記事を保存するディレクトリ $point = '1'; #採点機能設定(1=選択式,2=点数入力式,空白=採点なし) $plus_c = 'green'; #得点が+のときの得点色(標準は青。#0000ffなどと色番号で指定しても良い) $minus_c = 'yellow'; #得点が−のときの得点色(標準は赤。上に同じ) #--- 採点機能で 1 を選択した場合の評価と点数一覧(評価のタイトル=点数) ---# @POINT = ( 'とても良い=50', '良い=30', '普通=10', '良くない=-20', '最悪=-30'); #--- 採点機能で 2 を選択した場合の点数の上限,下限設定 ---# $maxp = '100'; #最高点設定 $minp = '0'; #最低点設定 #-----アクセス拒否-----# $kyohi = ''; #する場合は 1 を入れる #--入室を拒否するIPまたはブロバイダ名を '127.0.0.1', というように''内に記述---# @kyohi = ( 'proxy', '', '', '', ''); #------表示するメッセージなどの設定<タグも使えます>------# #一覧のタイトルの下に表示するメッセージ sub mes{ print < ■ホームに戻る HTML #ここは新規投稿を打ち切る場合に必要な処理です if ($FORM{'log'} eq '' && $rom eq '') { if ($cnt <= $max) { print "■新規投稿\n"; } } print <説明書 ■検索 ■管理用 HTML } #作品一覧の上に表示するメッセージ sub mes2{ print < *投稿作品一覧*HTML } #新規投稿・検索のページなどで上部に表示するメッセージ sub mes3{ print < ■一覧に戻る HTML #こちらは投稿作品の編集時の場合のみ表示するメッセージ if ($FORM{'key'}) { print "■作品に戻る\n"; print "■削除・編集に戻る\n"; } } #作品一覧の下に表示するメッセージ sub mes4{ print < ■ホームに戻る HTML #ここは新規投稿を打ち切る場合に必要な処理です if ($FORM{'log'} eq '' && $rom eq '') { if ($cnt <= $max) { print "■新規投稿\n"; } } print <説明書 ■検索 ■管理用 HTML } #説明書で表示するメッセージ("\"は文字化け防止用なので削除しないこと) sub mes5{ print <
|
HTML
@mes=(); @ctgr=();
$ctgr[0] = "▼この掲示板について\n";
$mes[0] .= " \n"; $mes[1] .= " \n"; $mes[1] .= "*小説投稿*\n"; $mes[1] .= " \n"; $mes[1] .= "
\n"; $mes[1] .= " \n"; $mes[1] .= "*投稿作品*\n"; $mes[1] .= " \n"; $mes[1] .= "
\n"; #背景統一時は非表示 if ($haik) { $mes[1] .= " \n"; $mes[1] .= "*背景と文字色の選択*\n"; $mes[1] .= " \n"; $mes[1] .= "
\n"; } $mes[1] .= " \n"; $mes[1] .= "*その他*\n"; $mes[1] .= " \n"; $mes[1] .= "
\n"; $mes[1] .= " 例: 「思い出 第一話」, 「明日の空 〜朝の巻〜」\n"; #連続投稿禁止期間が 0 の時は非表示 if ($wait + 0) { if ($wait < 100) { $p_wait = $wait + 0; $p_wait .= '秒'; } elsif ($wait < 10000) { $p_wait = $wait / 100; $p_wait .= '分'; } elsif ($wait < 1000000) { $p_wait = $wait / 10000; $p_wait .= '時間'; } elsif ($wait < 100000000) { $p_wait = $wait / 1000000; $p_wait .= '日'; } $mes[1] .= " まず作品下部の「感想を見る」の欄を選択すると感想閲覧ページに飛びます。\n"; $mes[2] .= " ページ下部に感想投稿フォームがあります。そちらからどうぞ。\n"; $mes[2] .= " \n"; $mes[2] .= "
\n"; $mes[2] .= "
必要な項目を修正して「投稿」ボタンを押してください。\n"; if ( (!$rom && $sel eq '1') || ($res && $sel2 eq '1') ) { $mes[3] .= " 欄内の「記事を上げる」にチェックを入れると、記事が一覧の最上部に移動します。\n"; } $ctgr[4] = "▼投稿上の注意\n"; $mes[4] .= " 例: http://google.co.jp/ ⇒ http://google.co.jp/\n"; $mes[4] .= " 通常はこの設定になっているので問題ありません。\n" if ($encode); #トリップ機能無効時は非表示 if ($trips) { $mes[4] .= " 「名前#任意の文字列」と入力すると「名前◆暗号化文字列」と固有のHNに変換されます。\n"; $mes[4] .= " 例: 「クロネコ#123」 ⇒ 「クロネコ◆T6WruEzj8n6」\n"; $mes[4] .= " 例: 「クロネコ◆T6WruEzj8n6」 ⇒ 「クロネコ◇T6WruEzj8n6」\n"; $mes[4] .= " 例: 「クロネコ◆T6WruEzj8n6」 ⇒ 「クロネコ#」\n"; } #ID機能無効時は非表示 if ($hos eq '1') { $mes[4] .= " プロバイダが同じなどの場合にたまに他者と一致することがあります。\n"; $mes[4] .= " また、プロバイダによってはIPが変動するため、同時にIDも切り替わることがあります。\n"; } } $ctgr[5] = "▼作品一覧について\n"; $mes[5] .= " \n"; $mes[5] .= "
\n"; $ctgr[6] = "▼作品閲覧について\n"; $mes[6] .= " TOPの「検索」メニューからどうぞ。\n"; $mes[7] .= " 並び替えの内容は以下のとおりです。 \n"; $mes[7] .= "
\n"; $mes[7] .= " \n"; foreach (@ctgr) { if ($_ eq '') { $i++; next; }; print "$ctgr[$i]\n"; if ($#ctgr-1 >= $i) { print "|"; } $i++; } print "\n"; #各メッセージ表示処理 $i=0; foreach (@mes) { if ($_ eq '') { $i++; next; }; print " \n"; print "
\n"; print "\n"; print " |
\n"; &load(\%param); &rep(\@lines,\%param); &list(\@lines,\%param); } else { print "
【作品が投稿されていません】\n"; } &mes4; &tyo; &foot; exit; } sub html2 { #1件の作品のみ表示するView local($lencnt)=0; &read2($FORM{'key'}); if ($cnts) { &count2($FORM{'key'}); } ⊤ $tit =~ s/\0/\,/g; if ($sakutit) { if ($mgki eq '') { print "
| \n";
print " \n"; print "\n"; print "■一覧に戻る "; print "■感想を見る\n" if($res); print "■削除・編集\n"; print " |
"; local($page,$page_end) = &page_now($FORM{'page'},$cnt,$list); local(%param) = (start=>$page,end=>$page_end,range=>$list); &load(\%param); &rep(\@lines,\%param); &list(\@lines,\%param); print "
\n";
print "[検索に戻る]\n";
print "[一覧に戻る]\n";
print "\n";
&foot;
exit;
}
sub html5 {
#語句検索一覧
local($serch,$type) = ($FORM{'serch'},$FORM{'type'});
local(@serch,@lines,@find,$flag,$cnt,$param,$num);
if ($serch eq '') { &error("検索語句を指定してください。"); }
$serch =~ s/\x81\x40/ /g;
@serch = split(/\s+/,$serch);
open(FD,"$file") || &error("ログファイル$fileがみつかりません。");
@lines = ";
&load(\%param);
&rep(\@lines,\%param);
&list(\@lines,\%param);
}
else {
print "は見つかりませんでした。\n";
print " \n";
print "[検索に戻る]\n";
print "[一覧に戻る]\n";
print "\n";
&foot;
exit;
}
sub regist {
#記事書き込み
if (!$post) { &error("不正アクセスです。") }
local(%param) = (
name => $FORM{'name'},
val => $FORM{'value'},
edit => $FORM{'passedit'},
pwd => $FORM{'pwd'},
mail => $FORM{'mail'},
url => $FORM{'url'},
axs => $FORM{'access'},
tit => $FORM{'tit'},
bg => $FORM{'bg'},
bg2 => $FORM{'bg2'},
img => $FORM{'img'}
);
($cname,$curl,$ctit,$cimg) = &fcheck(\%param);
&host;
$encpwd = &encopass($FORM{'pwd'});
&date;
&lock;
open(FD,"$file") || &error("ファイル読込みに失敗しました。");
@lines = ▼「$tit」 No.$no 感想修正フォーム
\n";
}
print "
\n";
print "\n";
print "
\n";
&foot;
exit;
}
sub error {
#エラー処理
if ($lockon) { &unlock; }
print "Content-type: text/html\n\n";
print " \n";
$page3 = $FORM{'page3'} || 1;
if ($list3 && length($FORM{'value'}) > $list3) {
$flag=1;
$lencnt = &partition($flag);
}
$date = "****年**月**日(week) **時**分**秒";
$hosts = undef;
&make_novel($ctit,$cname,$FORM{'mail'},$curl,$date,$FORM{'value'},$FORM{'come'},$hosts,$lencnt);
local($ok) = <※あなたの投稿作品はこのイメージで表\示されます
間違いがなければOKボタンをクリックしてください。
書き直したい場合はブラウザの「戻る」ボタンで戻ってください。
投稿後もPASSWORD [ $FORM{'pwd'} ] を使って編集、削除が可\能\です。
HTML
if (!$lencnt || $lencnt == $page3) { print "$ok\n"; }
print " ERROR!!
\n";
print "$_[0]
\n";
&foot;
exit;
}
sub deleview {
#作品の削除選択画面
local(@lines,$cnt);
if ($FORM{'pwd'} ne $pass) { &error("PASSWORDが一致しません。"); }
open(FD,"$file") || &error("ファイル読込みに失敗しました。");
@lines =