[ CGI集 | CGI解説 | Perl解説 | HTML解説 | LinuxMemo | Q&A | QuizLink ]      

チャットCGI T-Chat Ver.2.10 説明書

about...

機能

 簡単なチャットです。といっても、自動リロード機能や入室/退室の管理等はできません。チャットというより一言掲示板というほうが良いかもしれません。一つのプログラムで複数のチャットルームを開くことができます。

 以下の特徴を持っています。(は Ver.2 からの新機能)

  • 一つのプログラムで複数の部屋(チャットルーム)を作ることができる。
  • 全てのログが残せる。
  • 書き込みの時にログを残す、残さないを選べる。
  • 名前の色、表示行数を選べる。
  • HTMLタグは全面不可。
  • リンクを作ることができる。
  • 名前の色を一覧表示できる。
  • 管理ページよりログの一括消去、配色デザインの変更が可能
  • ★(2.10以降) Cookieによる名前、名前色、URL(選択時)の記憶が可能。

[目次へ]

ソース

(ダウンロード後、ファイル名が "-cgi.txt" となってるものを ".cgi" に変更してください)

全ファイルをまとめてダウンロード 〜 chat210.lzh

プログラム

  • tchat.cgi ... 本体
  • jcode.pl ... 日本語処理用ライブラリ (Copyright (c) 1992,1993,1994 Kazumasa Utashiro)

[目次へ]

インストール方法

インストール

  1. ソースからtchat.cgijcode.plの二つのファイルをダウンロードする。
    ※ ダウンロード方法はソースをダウンロードするを参照。

  2. tchat.cgi最上部のPerlのパスを正しく設定する。
    ※ 詳しくはPerlのパスを設定するを参照。

  3. tchat.cgiの上部にある「変数設定部」の以下の変数を編集する。

    • $basedir ..... データファイルを格納するディレクトリのパス(※注1)
    • $ext ..... CGIプログラムの拡張子
    • $code ..... 日本語コード(※注2)
    • $method ..... フォーム内容の送信方法(※注3)
    • $password ..... 管理用パスワード
    • $admin_email ..... 管理者メールアドレス(※注4)
    ※注1 データファイルをプログラムと同じ場所に置く場合は $basedir=".";のままで。
    ※注2 sjis以外に変更する場合は、全てのファイルをnkfなどでそのコードに変換すること。
    ※注3 "post" が使えないところでは "get" に変えてください
    ※注4 @ の前に必ず \ をつけて下さい。(例, t-nishida\@mvh.biglobe.ne.jp)

  4. tchat.cgi, jcode.pl を FTPのアスキーモードで転送する。パーミッションを705604にする。
    ※ FTPについてはプログラムをFTPで送るを参照。
    ※ パーミッションについてはパーミッションを設定するを参照。

    (telnetの場合)
    % chmod 705 tchat.cgi
    % chmod 604 jcode.pl

  5. $basedirで指定したディレクトリに($basedir=".";の場合は tchat.cgi と同じディレクトリ。以下同様。)に ディレクトリ lockdir を作る。パーミッションは707にする。

    (telnetの場合)
    % mkdir lockdir
    % chmod 707 lockdir

  6. ブラウザから、tchat.cgiにアクセスしてみる
     → 「部屋の名前が指定されていないか、不正です」と出ればOK。
       ※ 上のように表示されない場合、ブラウザでアクセスするを参照して問題を解決してください。

以上でインストールは完了です。

[目次へ]

 

チャットルームを設置する

  1. 部屋の名前を決める。使える文字は以下の通り:

    • 半角英語の大文字(A-Z)
    • 半角英語の小文字(a-z)
    • 半角数字(0-9)
    • アンダーバー(_)

     ここでは例として room1 とする。

  2. room1.txtlog-room1.html という二つの空ファイルを作る。
    ※ 空ファイルの作り方は、空ファイルの作り方を参照。

  3. room1.txtlog-room1.html$basedir で指定したディレクトリにFTPで転送する。パーミッションを606にする。

    (telnetの場合)
    % chmod 606 room1.txt
    % chmod 606 log-room1.html

  4. ブラウザから tchat.cgi?room=room1 にアクセスする。
     → 書き込みフォームと管理用フォームが表示される。

  5. ページ下部の管理用フォームに、タイトル、見出し、説明文、戻り先URL、配色などを書き込み、インストールの2で設定した管理用パスワードを入力して「作業実行」ボタンを押す。

    ※ 見出しと説明文にはHTMLタグを使用できます。他は使えません。
    ※ お気に入りのデザインになるまで何度でもやり直せます。
    ※ チャットを運用し始めた後でも変更できます。

  6. デザインができあがったら、「通常モードに戻る」を押す。
       → 書き込みフォームのみになる。

 これで準備完了です。書き込めるかどうかをテストしてみてください。

[目次へ]

 

チャットルームを追加設置する

 新たに部屋を増やしたいときは、部屋の名前を既に存在しているものと重複しないようにして、(例えば room1 を使用していたら room2 とか)、あとは上の「チャットルームを設置する」の手順と同じようにやってください。

[目次へ]

 

使い方

名前色一覧を見る

 「名前色」の右にある「一覧」をクリックすると、選択可能な名前の色とそのサンプルが表示されます。

選択できる名前色を増やす方法は後述。

[目次へ]

 

デザインを変更する

 ページ右下の「管理用」をクリックすると、管理用フォームが出てきます。

 変更したい部分を書き直し、インストールの2で設定した管理用パスワードを入力して「作業実行」ボタンを押すと、パスワードが合っていればデザインが指定通りに変更されます。

 変更できる点は以下の通り:

  • タイトルタグ不可
    ... <TITLE>タグの間に挟むもの。

  • 見出しタグ可
    ... ページの一番上に表示する見出し。

  • 説明文タグ可
    ... 見出しの下に書く、掲示板の紹介文。

  • 戻り先http://〜 から始まる絶対パス
    ... 左上の「戻る」のリンクを押したときにどのURLに移動するか。

  • 配色
    ... 各部分の色を半角カンマ(,) 区切りで指定。左から「背景、フォント、フォーム背景、フォームフォント、リンク」の順。
       ※ 入力欄を空欄にして「作業実行」を押せば、初期配色に戻ります。

[目次へ]

 

ログを消去する

 デザインを変更するで利用した管理用フォームの左下にある「全ログの消去」をチェックし、管理用パスワードを入力して「作業実行」を押すと、一時ログファイル(〜.txt)と、全ログファイル(log-〜.html)の両方がクリアされます。

 ログが貯まりすぎて容量が足りなくなった場合、全ログファイル(log-<room名>.html)をFTPでダウンロードしてから、この「全ログの消去」を行えば、ログを保存しておくことができます。

[目次へ]

Note

表示のカスタマイズ

 tchat.cgi の 31行目付近(以下)を編集することにより、細かい表示を変更することができます。

##### 以下は表示のカスタマイズ #####

# 仮ログ最大保存行数
$maxlines = 100;
# 最初の表示行数
$defaultlines = 20;
# URLを入力したときリンクになる文字
$linkcharacter = "★";
# 選択可能な表示行数(1以上$maxlines未満)
@lines_list = (10, 20, 30, 50 ,$maxlines);
# 入力欄を複数行にするか
$multirow_input_form = 1;
# フォームの横サイズ
$input_form_size = 60;
# クッキーにURLも覚えさせるか
$enable_cook_url = 0;

  • $maxlines (最大表示行数)
    ... 一時ログ(〜.txt)に最大何行まで保存するか。ここで指定した行数以上は「過去ログ」で表示される全ログファイル(log-〜.html)で見ることができます。

  • $defaultline (デフォルトの行数)
    ... 一番最初は何行表示にするか。($maxlines 以上の数は入れられません。)

  • $linkcharacter (リンクになる文字)
    ... URL が書き込まれた時、リンクになる文字。

  • @lines_list (表示行数の種類)
    ... 表示行数の選択肢。($maxlines 以上の数は入れられません。)
       例えば上の状態だと、「表示行数」は10行、20行、30行、50行、100行から選ぶことができます。

  • $multirow_input_form (書き込み欄のタイプ)
    ... 書き込み欄を複数行の TEXTAREA にするか、一行の TEXT にするかのフラグ。
         ・$multirow_input_form = 1; → 複数行(<INPUT TYPE="text">)
         ・$multirow_input_form = 0; → 一行(<TEXTAREA>)

  • $input_form_size (フォームの横サイズ)
    ... 書き込み欄の横サイズをピクセル?単位で指定。

  • $enable_cook_url (クッキーにURLを覚えさせるかどうか)
    ...
    クッキーに「名前」と「名前色」以外に、「URL」も記憶させるかどうかの設定。
         ・$enable_cook_url = 1; → URLを記憶させる
         ・$enable_cook_url = 0; → URLは記憶しない

       ※ 常に自分のページへのリンクを表示するような永続的な使い方をする場合は「1」、チャット中にURLを教えるような一時的な目的で使いたい場合は「0」にする。

[目次へ]

 

名前色を増やす

 tchat.cgi の 40行目付近(以下)を編集することによって、選択できる名前の色を増やすことができます。

### 名前色リスト
# $CT[x] ... 実際の色
# $CN[x] ... リストに表示する色の名前
$CT[0] = '#000000'; $CN[0] = "くろ";
$CT[1] = '#FF0000'; $CN[1] = "あか";
$CT[2] = '#0000FF'; $CN[2] = "あお";
$CT[3] = '#A52A2A'; $CN[3] = "ちゃいろ";
$CT[4] = '#008000'; $CN[4] = "みどり";
$CT[5] = '#800080'; $CN[5] = "むらさき";
$CT[6] = '#00008B'; $CN[6] = "こん";
$CT[7] = '#696969'; $CN[7] = "グレイ";

###(変数設定部)ここまで#########################################

 新たに加えたい色($CT[x])とその名前($CN[x])を、下に加えていきます。色を増やす毎に、番号 x も一つずつ増やしていきます。

(例1) オレンジ(#CC6633)を加えたい場合
..... 「$CT[8] = '#CC6633'; $CN[8] = "オレンジ";」 と書く

※ 色は16進数指定("#00FF00" 等)でも名前指定("green" 等)でもどっちでも構いません。

[目次へ]

 

ログを一切残したくない場合の設定

 このチャットシステムでは全ログを保存しながら処理を軽くするために、ログを一時ファイル(xxx.txt)と全ログファイル(log-xxx.html)に分けています。一時ログファイルには、$maxlines (カスタマイズ参照)で指定された行数分の書き込みだけが残されていますが、全ログファイルには過去すべての書き込みが残されます。

 書き込みの際、「ログを残さない」をチェックしておくと、一時ファイルの方には記録されますが、全ログファイルの方には残らないようにすることができます。

 又、管理者の判断で一切のログを残したくない、という場合は、tchat.cgi 中の以下の行(106行目付近)の、下二行の頭の 「#」を取り除いて下さい。

# ログを一切残したくない場合は、下の2行の頭の # を取ってください。
# $logselect = "CHECKED";
# $FORM{'nolog'} = 1;

[目次へ]

 

時刻がズレる場合の対処方法

 海外サーバをお使いの方で、時刻が日本時間とで差がある、という場合は、tchat.cgi の59行目、「標準時とのズレ(時間)」のところで時差を修正できます。

(例1) 9時間遅く表示される場合(本当は11時なのに2時と表示されてしまう場合)
[修正前] $timefix = 0; → [修正後] $timefix = 9;

(例2) 2時間早く表示される場合(本当は11時なのに13時と表示されてしまう場合)
[修正前] $timefix = 0; → [修正後] $timefix = -2;

[目次へ]

 

標準のROOM名を指定する方法

 例えば、チャットルームを chat1 という名前で作成した場合、通常は「tchat.cgi?room=chat1」というURLでアクセスします。この ? 以下が見た目が悪いしうっとおしい、という場合、標準の名前に「chat1」を設定しておくと、「tchat.cgi」だけでチャットルームににアクセスできるようになります。

 標準の名前は、tchat.cgiの61行目、「標準のROOM名」のところで指定できます。

(例) chat を標準の名前にしたい場合
[修正前] $default_room = ""; → [修正後] $default_room = "chat1";

 チャットルームを一つしか作らない、という場合、その名前を $default_room に登録しておくとURLが短くなり、トラフィックを節約できてよいでしょう(?)。

[目次へ]

 

クッキーの有効期限を変更する方法

 T-Noteには「名前等をブラウザに記憶させる」機能がありますが、標準では最後の書込みから30日以上経つと記憶が解除されてしまいます。これをもっと長くしたい、という場合は、tchat.cgi の65行目、「クッキーの有効期限(日)」のところで指定できます。

(例)存続期間を100日にしたい場合
[修正前] $cookie_lifetime = 30; → [修正後] $cookie_lifetime = 100;

[目次へ]

 

プログラムの名前を変更する方法

 「tchat.cgi」っていう名前がダサくてイヤ、という場合は、プログラムの名前を変更することも可能です。tchat.cgiの63行目、「スクリプトの名前」のところでプログラム名を指定して下さい。

(例) tchat.cgi を chat.cgi という名前に変えたい場合
[修正前] $script_name = "tchat"; → [修正後] $script_name = "chat";

その後、ファイル名を tchat.cgi から chat.cgi に変更して下さい。

[目次へ]

 

「名前等をブラウザに記憶させる」の機能がうまく働かない場合の対処方法

 「名前等をブラウザに記憶させる」のチェックボックスをチェックして書きこんでも記憶されない、という場合(※)、tchat.cgiの65行目、「スクリプトの名前」のところを以下のように指定して下さい。

[修正前] $enable_cookiepath = 1; → [修正後] $enable_cookiepath = 0;

※ サーバの仕様によってそのようなことが起こる場合があるようです。

[目次へ]

 

「過去ログ」をクリックしてもログが見られない場合の対処方法

 書き込みフォームの下の「過去ログ」をクリックすると、通常では全ログが表示されますが、お使いのサーバの設定によっては「Not Found」や「Forbidden」と出て表示できない場合があります。このような場合、tchat.cgi の 68〜71行目の以下の部分を修正することによって対処します。

# ログ保存先ディレクトリ
$logdir = "";
# ログのURL
$logurl = "";

具体的には以下の2通りのケースがあります。

【ケース1】 CGIとHTMLで、http:// 直後のサーバアドレス部が変わる

 例えば、全く同じディレクトリに置いてある「test.html」と「test.cgi」というファイルに対して、

   ・test.html にアクセスする場合 → http://www.hoge.ne.jp/~user/test.html
   ・test.cgi にアクセスする場合 → http://cgi.hoge.ne.jp/~user/test.cgi

 と、サーバアドレスの(主に)頭の部分が変わることがあります。www5a.biglobefreewebはこのケースに当たります。その場合、上の $logurl に log-xxx.html のURLを書いてやることで解決します。具体的には以下の通り。

   (例)・TchaTの場所は http://cgi.www5a.biglobe.ne.jp/~user/cgi-bin/chat/tchat.cgi、
      ・通常のHTMLの場合のサーバアドレスは www5a.biglobe.ne.jp の場合:
        → $logdir = ""; ← そのまま
          $logurl = "http://www5a.biglobe.ne.jp/~user/cgi-bin/"; ← 最後の / を忘れずに!

【ケース2】 CGIを置く場所にHTMLを置くことが禁止されている

 CGIプログラムを置くディレクトリにHTMLを置くと表示できないサーバもあります。この場合は、まずログを置くディレクトリを決めて、そこへのパスとURLを $logurl$logdirに設定してやる必要があります。具体的な対処方法は以下の通り。

   (例)・FTPでログインした直下のフルパスは /home/user
      ・そこに /cgi-bin/public_html というディレクトリがある。
      ・CGIプログラムは /cgi-bin 以下に置く。cgi-bin直下のURLは http://www.hoge.com/cgi-bin/user/
      ・HTMLは /public_html 以下に置く。public_html直下のURLは http://www.hoge.com/~user/
      ・TchaTの場所は http://www.hoge.com/cgi-bin/user/chat/tchat.cgi
      ・ログは http://www.hoge.com/~user/chatlog/に置く
        → $logdir = "/home/user/public_html/chatlog"; ← 最後に / は付けない!
          $logurl = "http://www.hoge.com/~user/chatlog/"; ← 最後の / を忘れずに!

※ ここまで入り組んでいると初心者には難しいと思います。(でもこういうサーバは実在する。) どうしても分からない場合はQ&Aで相談してください。

[目次へ]

バージョン情報

バージョン履歴

  • (00/8/14) Ver.2.10
     Cookieの追加。細かい動作の調整。説明を大幅に加筆。

  • (98/9/26) Ver.2.01
     タグのつけ間違いで、管理機能からのフォント色の変更がうまく働いていなかったのを修正。

  • (98/9/11) Ver.2.00
     新規登録。

[目次へ]

 

1.xx → 2.0x 以降

 Ver.2.XX は Ver.1.XX とデーターファイルの互換性があります。バージョンアップする場合は、tchat.cgi をインストールの1、2に従って変数設定して、古い tchat.cgi のある場所へ上書きでFTPして下さい。

[目次へ]