#!/usr/local/bin/perl require './jcode.pl'; #さくっと10分くらいで書いたコードなので、きちゃないですー。 #別にライセンストカ言うつもりはありませんので、勝手に使っちゃって #構わないですよー。 #「もなみんからもらった」トカ書いてくれたら嬉しかったりー。 #ついでにリンクまでしてくれたら、もっと嬉しかったりー。 #改良なんかしてくれた日には泣いちゃうカモーw # #もなQのhtmlソースを見れば、formの作り方はわかると思います。 #jcode.plは自分で用意してくださいねー。 #一応補足ですケド・・・ # # $fileはiframeで表示するファイル名ですー。ここに書かれますー。 # $maxは投稿できる最大バイト数ですー。 # $passwordは自分が投稿するときにハンドル代わりに入れる文字列ですー。 # $delpassは削除するときにハンドル代わりに入れる文字列ですー。 # ちなみに、削除するときも本文に何か書かないと削除できません。馬鹿ですねー。 # #排他制御したい人は#排他制御したい人用の3箇所のコメントアウトを削ってねー。 #もなみは、毎日board.htmlを手動でリネームして、からっぽのboard.htmlに #入れ替えたりしてます。 #え?date分解してファイル名自動で作れって? #めんどうだもーん。ふみふみー。 # #へんこー履歴みたいなものー。 #ver1.1 #color機能が追加されましたー。 #form上で色(color=1〜5)を指定すると、その色で出ますー。(もなQフォーム参照) #fontタグを外出ししたので、ちょっとだけバイト数の効率が上がっていますー。 #ブラウザ互換性向上のため、を出力するようにしましたー。 # # #もなみ http://www.tokyo-nazo.net/~tester/ $file = './board.html'; $max = '4000'; $password = "password"; $delpass = "delpass"; #ふにふに。 print "Content-type: text/html\n\n"; $count = -s $file; #お約束ー if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; } #さらにお約束ー @a = split(/&/, $buffer); foreach $x (@a) { ($name, $value) = split(/=/, $x); $FORM{$name} = $value; } #formからのデータ拾ったり。 $handle = $FORM{'handle'}; $tukkomi = $FORM{'tukkomi'}; #怪しいフラグ $ng = "1"; if ($tukkomi ne ''){ if ($handle eq '') {$handle = '名無し';} #すっごい無駄なお約束 $handle =~ tr/+/ /; $handle =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $handle =~ s//>/ig; &jcode'convert(*handle,'sjis');#この行を外しても化けない人なら、外しちゃうと半角カナ対応します。 #すっごい無駄なお約束 $tukkomi =~ tr/+/ /; $tukkomi =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $tukkomi =~ s//>/ig; &jcode'convert(*tukkomi,'sjis');#この行を外しても化けない人なら、外しちゃうと半角カナ対応します。 #カラー対応 $color=$FORM{'color'}; if ($color eq 2){ $buf = "$handle\様\:$tukkomi
"; }elsif($color eq 3){ $buf = "$handle\様\:$tukkomi
"; }elsif($color eq 4){ $buf = "$handle\様\:$tukkomi
"; }elsif($color eq 5){ $buf = "$handle\様\:$tukkomi
"; }else{ $buf = "$handle\様\:$tukkomi
"; } #普通の人用 if ($handle eq $password){ #もなみ用 $buf ="\も\な\み\:$tukkomi
"; $ng = "0"; } #バイト数チェックはもなみは例外。ふふり♪ if (length($buf)+$count > $max){ if ($ng eq "1") {&error3; exit;} } #排他制御したい人用 #if (!mkdir("./boardlock", 0777)) { # &error4; exit; #} #まずはファイルからデータ取って・・・ if (!open(DB,"$file")) { &error2; exit;} @data = ; close(DB); #今度はそのファイルを開いて・・・ if (!open(DB2,">$file")) { &error2; exit;} print DB2 "\n"; print "\n"; if ($handle eq $delpass) { #削除なら先頭(実際には1行目はfont指定行なので2行目)削除するしー。 for($i=2;$i<$#data;$i++){ print DB2 $data[$i]; print $data[$i]; } }else{ #書くなら先頭(実際には1行目はfont指定行なので2行目)に書くしー。 print DB2 "$buf\n"; print "$buf\n"; for($i=1;$i<$#data;$i++){ print DB2 $data[$i]; print $data[$i]; } } print DB2 "\n"; print "\n"; close(DB2); #排他制御したい人用 #rmdir("./boardlock"); } exit; sub error2 { print 'ファイルでエラーが出たみたい'; #排他制御したい人用 #rmdir("./boardlock"); } sub error3 { print "ごめんなさい、総投稿が$maxバイトを越えてたので、投稿できませんでした。"; } sub error4 { print '誰かが投稿中なので、投稿しなおしてね'; }