カレッヂ |
質問者 ま〜くん
投稿日 1/16(火) 00:55:46
2ショットチャット3を基本として、2ショットチャット4の機能であるログ保存を 持たせた2ショットチャットに改造したいけど、さっぱり分からないのです! 3に手を加えていきたいと思っています。 4より3の方が使いやすいから・・・・ 誰かおしえてくださ〜い! |
回答者 どりちゃ
[削除]
投稿日 10/6(土) 20:43:59
レスキューさんの著書『実践Perlプログラミング』のP.272を、以下のように応用すればできますよ。 あらかじめ「yyyyyy」というディレクトリと、その中にルーム名の付いた空のtxtファイル (chmod 666)を部屋数の分だけ用意します。 次に2shot.cgiの書き換えを3箇所行います。 一、 #データ格納フォルダの場所(Path) このCGIから見た位置 $base_dir = './x/'; #========================================追加分======================================== $log_dir = './yyyyyy/' #====================================================================================== 二、 $chat_file = $base_dir . "$FORM{'room'}\.log"; $entry_file = $base_dir . "$FORM{'room'}\.ent"; $mes_file = $base_dir . "$FORM{'room'}\.mes"; #========================================追加分======================================== $log = $log_dir . "$FORM{'room'}\.txt"; #====================================================================================== 三、 sub write { $host = $ENV{'REMOTE_HOST'}; $addr = $ENV{'REMOTE_ADDR'}; if ($host eq '') { $host = $addr; } if ($host eq $addr) { $host = gethostbyaddr(pack('C4',split(/\./,$host)),2) || $addr; } if (!open(DB,"$chat_file")) { &error('システムエラー','チャットファイルが開けません.'); } @lines = <DB>; close(DB); $axs = @lines; if ($axs >= $max) { shift(@lines); } push(@lines,"$date_now\,$FORM{'name'}\,$FORM{'chat'}\,$FORM{'email'}\,$host\n"); ##$host入れる。 if (!open(DB,">$chat_file")) { &error('システムエラー','チャットファイルへ記録できません.'); } print DB @lines; close(DB); #========================================追加分======================================== $FORM{'name'} =~ s/</</g; $FORM{'name'} =~ s/>/</g; $FORM{'chat'} =~ s/</</g; $FORM{'chat'} =~ s/>/</g; if (!open(LOG,">> $log")) { &CgiDie('エラー','ログファイルへ記録できません.'); } print LOG "$date_now $FORM{'name'}>$FORM{'chat'}($host)\n"; close(LOG); #====================================================================================== $mugon = 0; } これで部屋毎のログが取れます。ただしチャットのログはすぐ増大するので、管理は大変ですが。 |
返信(回答)する
Web裏技 |