#! /usr/local/bin/perl # #ゆいちゃっとMini1.0(chat.cgi) # require './jcodeLE.pl'; $| = 1; &init; &decode; &jikan; &write if ($chat); &html;exit; sub init{ #初期設定など $passwd='admin123';#書き込み時パスワード(必ず変更のこと。) $chat_file = './chat.dat'; #チャットログ(ファイル名はなるべく変更しておくこと。) $method = 'GET';#やっぱり、GETよねぇ〜 $title = 'ゆいちゃっとMini1.0(伝言板仕様)'; $body='
'; $max = 50;#ログの最大行数 $host = $ENV{'REMOTE_HOST'};if($host=~/bmc/){$host="ppp753.master.ad.jp";} ####アクセス制限を使用するなら、#を消す。 #$kill_file = './kill.dat';#アクセス制限用 #open(DB,"$kill_file") || die "Cannot Open Log File $kill_file: $!"; # @lines2 =]*)>(.*)/$1/; $tag =~s/^\/(.*)//; $tag =~s/^([^\s]*).*/$1/; } $chat.='>' if($chat=~/<\/$/); @tags = reverse( @tags ); foreach $tag ( @tags ){ next if($tag =~/(img|^hr$|^br$)/i); $chat.="$tag>" if($tag); } $chat.='">タグえらー?' if( ($chat=~/.*<\/A>/i) ); $chat =~ s//g; $FORM{$name} = $value; } $name = $FORM{'user'}; $name =~ s/ //g; $name =~ s/ //g; $name =~ s/\t/</g; &getcookie if (${name} eq ''); &setcookie; $chat = $FORM{'chat'}; }#decode END sub jikan{#$dateに時刻を代入します。 $times = time;#18時間時差があるなら、$times = time+18*60*60とする。 ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime($times); $min = "0$min" if ($min < 10); $month++; $youbi = ('日','月','火','水','木','金','土') [$wday]; $date = "$month/$mday($youbi)$hour:$min"; }#jikan END sub readlog{ #配列@linesにログを読み込む open(DB,"$chat_file") || &ended; seek(DB,0,0); @lines = ; close(DB); }#readlog END sub writelog{ #$valueを@linesに加えたのち、書き込む (@lines < $max-1) || (@lines = @lines[0 .. $max - 2]); unshift( @lines,$value); open(DB,">$chat_file") || &ended; eval 'flock(DB,2);'; seek(DB,0,0); print DB @lines; eval 'flock(DB,8);'; close(DB); }#writelog END sub getcookie{ #くっきーを頂きます。 $cooks = $ENV{'HTTP_COOKIE'}; $cooks = '' unless($cooks =~s/.*yuiminidata=(.*)yuiminiend.*/$1/); ($name,$dmy) = split(/\t/, $cooks); }#getcookie END sub setcookie{ #くっきーをブラウザにプレゼントします。 local($dmy,$mdc,$monc,$yrc,$wdayc,$mc,$yc); ($dmy,$dmy,$dmy,$mdc,$monc,$yrc,$wdayc,$dmy,$dmy) = localtime(time + 7776000); $yc = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday') [$wdayc]; $mc = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec') [$monc]; $yrc = $yrc+1900; $mdc = "0$mdc" if ($mdc < 10); $data = "${name}\tyuiminiend"; return if(index($ENV{'HTTP_COOKIE'},$data) >= 0); print "Set-Cookie: yuiminidata=$data; expires=$yc, $mdc-$mc-$yrc 00:00:00 GMT\n"; }#このクッキーはだいたい3ヶ月間有効です。 __END__