99.4.2人専用チャット(TwoChat: frame only)
ふたりのホットライン−2人専用のチャットスクリプトです。
チャットのCGIは同時に書き込むと内容が消えたり,消滅対策のロック(symlinkやsleep)により待たされたり=BUSYと大変です。
このスクリプトは,ロック機能を省いて作成されていますので高レスポンスが期待できます。
ただ,表示メッセージが不安定(ノーコメントです)になる場合が考えられます。
力のある人はn人用にも改造することができるでしょう。
デモはこちらです。
99.4.1.アルゴリズム(著作権利の主張部分)
個人名 PIC X(20) 記入日時 PIC X(15) mm/dd(wdy)hh:mm メッセージ PIC X(n) n文字 ファイル初期化時のmlnの値 区切り PIC X(1) * 改行コード PIC X(1) LF
レコード長は,20+15+n+1+1=37+nバイトです。
メッセージが固定長のため,末尾で2バイト文字の漢字が不用意に1バイトずつに分割されて記録されないようにスクリプトでチェックしています。
メッセージ中の改行は1文字換算になります。
99.4.3.フォームの記述
ファイル初期化 | 表示 | 書き込み | 用 途 | |
---|---|---|---|---|
io | c | r | w | 機能の判別用 |
cnt | ◎ | ◎ | ◎ | 1人当たりの保存メッセージ数(1≦) 3が最適 |
mln | ◎ | ◎ | ◎ | 1メッセージ当たりの最長文字数(1≦) 100が最適 |
fn | ◎ | ◎ | ◎ | 拡張子(.txt)を除くメッセージファイル名 |
box | ◎ | ◎ | box番号=個人識別用の番号 1か2 | |
reftm | △ | △ | 自動リロード秒数 0か省略時はリロードしない | |
name | ◎ | 個人名 | ||
msg | ◎ | 書き込みメッセージ | ||
◎:必須 △:省略可 |
サンプル
メッセージファイル名:msg.txt 1メッセージ当たりの最長文字数:100 1人当たりの保存メッセージ数:3
http://www.bar.co.jp/foo/cgi-bin/twochat.pl?io=c&cnt=3&mln=100&fn=msg
http://www.bar.co.jp/foo/cgi-bin/twochat.pl?io=r&cnt=3&mln=100&fn=msg&box=1&reftm=0
<FORM METHOD="POST" ACTION="http://www.bar.co.jp/foo/cgi-bin/twochat.pl" TARGET="low">
<INPUT TYPE="hidden" NAME="io" VALUE="w">
<INPUT TYPE="hidden" NAME="cnt" VALUE="3">
<INPUT TYPE="hidden" NAME="mln" VALUE="100">
<INPUT TYPE="hidden" NAME="fn" VALUE="msg">
名前:<INPUT TYPE="text" SIZE=20 MAXLENGTH=20 NAME="name" VALUE="太郎">
Box:<INPUT TYPE="text" SIZE=1 MAXLENGTH=1 NAME="box" VALUE="1">
auto:<INPUT TYPE="text" SIZE=2 MAXLENGTH=2 NAME="reftm" VALUE="0">
<TEXTAREA NAME="msg" ROWS=3 COLS=50></TEXTAREA>
<INPUT TYPE="submit" VALUE="ok"> <INPUT TYPE="reset" VALUE="clear">
99.4.4.設置方法
2人のローカルファイル(自分のパソコン)上にそれぞれチャットのHTMLファイル(2種類)を置き,チャットの時はこれを呼び出します。
VALUEであらかじめ個人名とbox番号を設定しておけば,クッキー機能は必要ありません。
不特定多数の利用者を対象としない,このチャットシステムの最大の特徴です。
また,メッセージファイルの所在がわからなければ,いたずらは絶対にできません。
twochat.txt チャットスクリプト twochat.pl
chat1.txt index.htm
chat2.txt chat.htm
をダウンロード後に,自分の環境に合わせてファイル名などを修正して下さい。
2人でbox番号を決めindex.htmとchat.htmのboxの値を互いに変更します。
ex.太郎さん:box=1 花子さん:box=2
スクリプトの主な修正箇所はメッセージファイルの設置ディレクトリとパーミッションです。
$dir = "/home/foo/msg/"; # ~~~~~~~~~~~~ update to your environment(1/2) chmod(0666, $msg_file); # ~~~ update to your environment(2/2)
修正したスクリプトをftpで/home/foo/cgi-bin(任意)ディレクトリへ転送後に
kibita(*)cd /home/foo/cgi-bin
kibita(*)mv twochat.txt twochat.pl
kibita(*)chmod 705 twochat.pl
とします。
メッセージファイルのアロケーションは
kibita(*)cd /home/foo/msg
kibita(*)touch msg.txt
としてダミーファイルを作成します。
シェルが利用できない場合は,適当なファイルをこの名前で転送しておきます。
その後,対話する(index.htmの呼び出し)前に,ファイルを必ず初期化(io=c)します。
パーミッションはスクリプトが設定してくれます。
http://www.bar.co.jp/foo/cgi-bin/twochat.pl?io=c&cnt=3&mln=100&fn=msg
cntとmlnとfnのいずれかの値に変更が無い場合は,最初の一回のみでOKです。
つまり,cntとmlnとfnのいずれかを変更したら,上の例のURLの値を変更して初期化(URLを開く)すればよいのです。
fnを変更した場合は,あらためてメッセージファイルをアロケーションした後に初期化して下さい。
Copyright (c)1996 GOMASUKE
Since 12/10/1996, Last Updated 12/18/1996