#!/usr/local/bin/perl # WeB DoRaMa version 1.11 # Script written by Shigeto Nakazawa.(1996/11/27) # This script is free. # Arranged by Ninjinju-su CGI require './jcode.pl'; # --------------------------------- # 各種設定 # --------------------------------- $max = '150'; # 登録・表示最大数(あまりに多いと危険) $view = 5; # 初期画面で表示する数 $backurl = '../'; # 帰りのURL(変更してください) $mojicode = 'sjis'; # Windows なら 'sjis' UNIX なら 'euc' を推奨。 $logfile = 'dorama.log'; # 記録用ファイル $lockfile = 'dorama.lock'; # 鍵ファイル $lockcheck = 1; # 鍵ファイルの使用(通常は 1 にしてください) $pluscheck = 1; # 登場人物設定(1:自由登録モード 0:管理者限定登録モード) $kyaralogfile = 'kyara.log'; # 登場人物記録用ファイル $type = '<>'; #ログ形式設定 # --------------------------------- # フォームからデータをもらう # --------------------------------- if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; } $typec = $type; $typec =~ s/\\//; @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; &jcode'convert(*value,$mojicode); $value =~ s/\n//; if ($type ne '<>') { $value =~ s/$typec//; } $value =~ s/<(.|\n)*//g; $FORM{$name} = $value; } # --------------------------------- # HTML出力 # --------------------------------- print <<"_HTML_header_"; Content-type: text/html\n\n
_HTML_top_ for ($i=$view-1;$i>-1;$i--) { ($nn,$date,$dorama,$actor) = split(/$type/, $lines[$i]); $dorama_c = &change1($dorama); print "$actors[$actor]『$dorama_c』
\n"; if (!$i) { $no = $nn; } } print <<"_HTML_middle_";
$plusok [管理用]
_HTML_buttom_ } # ************* # 登録 # ************* sub regist { $no = $FORM{'no'}; $actor = $FORM{'actor'}; $dorama = $FORM{'dorama'}; $dorama_c = &change0($FORM{'dorama'}); # --------------------------------- # フォームセキュリチー # --------------------------------- ($ck_no,$date,$ck_dorama,$ck_actor) = split(/$type/, $lines[0]); if ($ck_no ne $no) { &error("残念、タイムオーバーです。すでに、誰かが執筆してしまったようです。一度戻って,再読み込みを行ってください。"); } if ($ck_actor == $actor) { &error("同じ人がセリフを言ってはいけません。"); } if ($colors[$actor] eq 'no') { &error("セリフを言う人を選んでください。"); } if ($colors[$actor] eq 'del') { &error("削除されていますので使えません"); } if ($dorama eq '') { &error("何も書かれていないか、または使用禁止の文字が使われているようです。<は使用しないでください。"); } if (length($dorama) >= 300) { &error("言葉が長すぎます。文字数は全角150字を超えてはいけません。"); } # ---------------------------------- # 日付を取得する # ---------------------------------- ($sec,$min,$hour,$day,$mon) = localtime(time); $mon++; if ($sec < 10) { $sec = "0$sec"; } if ($min < 10) { $min = "0$min"; } if ($hour < 10) { $hour = "0$hour"; } if ($day < 10) { $day = "0$day"; } if ($mon < 10) { $mon = "0$mon"; } $date = "$mon/$day $hour:$min:$sec"; # --------------------------------- # HTML出力 # --------------------------------- print <<"_HTML_thanks_";
執筆ありがとう!(^o^)
ゆっくりご覧下さい。見終わったら、ここをクリックすることで前のページに戻ります。
[もどる]
_HTML_thanks_
$i = 0;
$no = ($no + 1) % 9999;
@new = '';
unshift(@lines,"$no$typec$date$typec$dorama_c$typec$actor\n");
foreach $line (@lines) {
$i++;
push(@new,$line);
if ($i == $max) { last; }
}
for ($i=@new-1;$i>0;$i--) {
($no,$date,$dorama,$actor) = split(/$type/,$new[$i]);
$dorama_c = &change1($dorama);
print "$date : $actors[$actor]『$dorama_c』