#! /usr/local/bin/perl #----------------# # 初期設定 # #----------------# # 掲示板の名前 -------------------------- $title = 'あやしいわーるど@AMG'; # 文字色や背景などの設定 # body部 $bgc = '004040'; $textc = 'ffffff'; $linkc = 'eeffee'; $vlinkc = 'dddddd'; $alinkc = 'ff0000'; # 題名の色 $subjc = 'ffffee'; # --- 表示件数 -------------------------------------------- # 1ページに表示する件数のデフォルト値 $def = 30; # 1ページに表示する件数の最小値 $defmin = 0; # この件数以上でリロード/書き込みしたときには次はこの件数にする。 $defmax =120; # --- URL ---------------------------------------------- # このスクリプト $cgiurl = 'bbs.cgi'; $readfile= 'loveyou.dat'; # 連絡先 $mailadd = 'goodby@strangers.com'; # ログのURL $loglog0 = 'log'; $loglog1 = 'http://'; # ---------------------------------------- 書き込みチェック ---------------------------------------- # 管理人名前チェック・メールアドレス・パスワード $namez = 'しば'; $pass = 'chiba'; # 書き込み最大量 $maxlength = 1024*16; #投稿内容文字数 $max_v = 8000; #投稿内容行数(上の文字数との兼ね合いを考えて) $max_line = 120; # 二重書き込みチェック件数 $check = 10; # 二重書き込みチェックバイト数 $checklength = 10; # 書き込み件数の最大登録数の設定 $max = '120'; # ------------------------------------ ディレクトリ・ファイル名 ------------------------------------ # 日本語コード変換ライブラリjocde.plのパス require './jcode.pl'; # 内容が書き込まれる記録ファイルのパスを設定 $readfile = './loveyou.dat'; # 別途とるログのファイル名先頭文字・拡張子の指定 $logfile = "./log/"; $logfiledat = ".html"; # -------------------------------------------- カウンタ -------------------------------------------- # カウンタプラス値 $countplus = ""; # カウンタ開始日 $countdate = '99/7/26'; # カウンタファイルの先頭文字・拡張子の指定 $countfile = './count/count'; $countfiledat = '.txt'; # カウンタ強度(0のときは使用しない) $countlevel = 1; # --------------------------------------------- その他 --------------------------------------------- # 時差 $tim =0*3600; # 入力形式の設定 $method = 'post'; # 時刻処理 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time + $tim ); $month = ($mon + 1); # 時刻のゼロサプレス 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"; } # 曜日変換処理 $y0="日"; $y1="月"; $y2="火"; $y3="水"; $y4="木"; $y5="金"; $y6="土"; $youbi = ($y0,$y1,$y2,$y3,$y4,$y5,$y6) [$wday]; # 時刻フォーマット $date_now = "$month月$mday日($youbi)$hour時$min分$sec秒"; # ログファイル名取得 $filedate = "$logfile$year$month$logfiledat"; # よくわからない変数 $gesu = $ENV{'REMOTE_PORT'}; # 投稿時のaction名 $action = "regist"; # 追加対策 ------------------------------- # 外部投稿防止コード $protect_a = 9987; # 4桁 $protect_b = 55; # 2桁 $protect_c = 112; # 3桁 # 過去ログの最大ファイルサイズ $maxoldlogsize = 4 * 1024 * 1024; # 3MB ########################################################################################### # フォーム入力されたデータを$bufferに格納する(getかpostかによって取得方法が異なる) #if ($ENV{'REQUEST_METHOD'} eq "POST" && $ENV{'CONTENT_LENGTH'} < $maxlength) { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } #else { $buffer = $ENV{'QUERY_STRING'}; } if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; } if ($ENV{'CONTENT_LENGTH'} > $maxlength) {&error(5);} # $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; # 記録するデータはsjis &jcode'convert(*value,'sjis'); #改行連打のいたずらを回避(3行以上何も書かずに改行のみの部分は改行無視) #スペース+改行の連打を回避(上記を回避するためにスペースをいれて改行する悪戯の場合) if ($value =~ /\r\n/) { $value =~ s/\r\n/\r/g; } if ($value =~ /\n/) { $value =~ s/\n/\r/g; } if ($value =~ / \r \r/) { $value =~ s/ \r \r//g; } if ($value =~ /\ \r\ \r/) { $value =~ s/\ \r\ \r//g; } if ($value =~ / \r/) { $value =~ s/ \r/\r/g; } if ($value =~ /\ \r/) { $value =~ s/\ \r/\r/g; } if ($value =~ /\r\r\r\r/) { $value =~ s/\r\r\r\r//g; } # 処理の都合上の処理 $value =~ s/\n//g; # 改行文字は消去 if ($name eq 'value') { $value =~ s/&/&\;/g; $value =~ s/\,/\0/g; } elsif ($name ne 'page' && $name ne 'image') { $value =~ s/\,//g; $value =~ s/\;//g; $value =~ s/\://g; $value =~ s/\=//g; } else { $value =~ s/\,//g; } $value =~ s/<\;/g; $value =~ s/>/>\;/g; $FORM{$name} = $value; } # 表示ページ数の決定 ################################################## if ($FORM{'def'} ne '') { $def = $FORM{'def'}; } if ($def < $defmin) { $def = $defmin;} $defnext = $def; if ($defnext > $defmax) {$defnext = $defmax;} # 表示色の決定 ######################################################## if ($select ne "1") { &select; } $select=1; # ポップアップウインドウの決定 ######################################################## #if ($FORM{'image'} eq '') { $checked1='checked'; } #if ($FORM{'image'} eq '2') { $checked2='checked'; } #if ($FORM{'himage'} eq '') { $himage=''; } #if ($FORM{'himage'} eq '2'){ $link='$sec$min'; } # 全体の流れを決定する(actionやpwdはフォーム入力されたデータを格納する名前) ######################################################## # action=regist --> 記事記録処理して通常画面へ # その他 --> 通常画面へ if (($FORM{'def'} eq '0') && ($FORM{'value'} ne '')) { ®ist; } if ($FORM{'area'} eq 'read') { &read; } if ($FORM{'area'} eq '') { &list; } if ($FORM{'action'} eq "$action") { ®ist; } if ($FORM{'action'} eq 'search1') { &search1; } if ($FORM{'action'} eq 'search2') { &search2; } if ($FORM{'action'} eq 'search3') { &search3; } &html; # メイン表示サブルーチン ####################################################### sub html { if ($select ne "1") { &select; } $select=1; # プロテクトキー生成 local ( $ptime ) = time + $tim * 60 * 60; local ( $pkey ) = ( $ptime + $protect_a ) * $protect_b + $protect_c; print "Content-type: text/html\n\n"; print "
\n"; print "
\n"; #--- 記録記事の出力 ----------------------------------# # 記録ファイルを読み出しオープンして、配列<@lines>に格納する if (!open(DB,"$file")) { &error(0); } @lines =\n"; $page_next = $page_end + 1; $i = $page + 1; $j = $page_end + 1; if ($page_end ne $accesses) { print "以上は、現在登録されている新着順$i番目から$j番目までの記事です。
\n"; print "
\n"; } else { print "以上は、現在登録されている新着順$i番目から$j番目までの記事です。"; print "これ以下の記事はありません。\n"; } # このスクリプトの著作権表示(かならず表示してください) print "\n"; print "