■ 1. ファイルロック
CGIにある程度なれた方で、ぜひやって欲しい設定が「ファイルロック」設定です。 アクセスカウンタだと、よく「カウンタが飛んだ」などの表現でカウンタが0になる現象があるように、CGIでも「ログが飛ぶ」現象が発生します。これは UNIX システムの機構上避けられないのですが、ファイルロックを行いますと、ほぼログは守られます。
ファイルロックの手順です。
#-------------------------------------------------------------------●
# [任意 ^-^] ファイルロック用の作業ディレクトリ
# パーミッション777が与えられた適当なディレクトリを指定して下さい。
# 末尾のスラッシュは不要です。
$CONFIG{'lock_dir'} = './tmp';
|
ここで作った tmp ディレクトリは、複数のチャットで共有することができます。
■ 2. HTML タグの設定
CommuniCa では、初期状態ではやや過剰気味にタグを許可していますので、荒らされそうな環境下で用いる場合は、タグを制限できます。やり方はとても簡単で、ゲートウェイ中のタグ設定を見てください。
#-------------------------------------------------------------------#
# ===================================================== #
# HTML タグの許可 #
# ===================================================== #
#-----------------------------------------------------[CommuniCa 5]-#
# メッセージ中にどんなタグを許可しますか?
# 設定のための文法は、マニュアルを参考にして下さい。
@{$CONFIG{"allow_tag"}} = split (/\n/, <<"--- --- --- TAG END --- --- ---");
#### さあ、ここから許可タグを設定してください。
# --------- リンク
<A> </A>
# --------- フォントの見栄え
<FONT> </FONT> # フォント
<TT> </TT> # タイプライタ風 等幅フォント
<I> </I> # イタリック体
<B> </B> # ボールド体
<STRIKE> </STRIKE> # 取り消し線
<S> </S> # 取り消し線
<U> </U> # アンダーライン付き フォント
<MARQUEE> </MARQUEE> # スクロール文字
# --------- フォントの大きさ
<BIG> </BIG> # フォントサイズを1つ上げる
<SMALL> </SMALL> # フォントサイズを1つ下げる
# --------- 行と段落
<BR> # 強制的な改行
<P> </P> ? # 段落 ( ? が付いているのは、終了タグが省略できる意味)
<NOBR> </NOBR> # 改行禁止
<WBR> # 改行禁止中の改行許可
# --------- 整形済み文章
<PRE> </PRE>
# --------- グループ化
<DIV> </DIV> # ブロックレベル
<CENTER> </CENTER> # 中央
# --------- 上付き文字と下付き文字
<SUP> </SUP> # 上付き文字
<SUB> </SUB> # 下付き文字
# --------- リスト
<UL> </UL>
<OL> </OL>
<LI> </LI> ?
<DL> </DL>
<DT> </DT> ?
<DD> </DD> ?
# --------- テーブル
<TABLE> </TABLE>
<CAPTION> </CAPTION>
<THEAD> </THEAD> ?
<TFOOT> </TFOOT> ?
<TBODY> </TBODY> ?
<COLGROUP> </COLGROUP> ?
<COL>
<TR> </TR> ?
<TH> </TH> ?
<TD> </TD> ?
# --------- 画像
<IMG>
# --------- 語句の意味づけ
<EM> </EM> # 強調
<STRONG> </STRONG> # さらに強調
<DFN> </DFN> # 定義
<CODE> </CODE> # コーディング
<SAMP> </SAMP> # サンプル
<KBD> </KBD> # キーボードからの入力
<VAR> </VAR> # 変数
<CITE> </CITE> # 引用
<ABBR> </ABBR> # 略語
<ACRONYM> </ACRONYM> # 頭字語
# --------- 引用
<BLOCKQUOTE> </BLOCKQUOTE> # ブロックレベル
<Q> </Q> # インライン
# --------- 変更点の表示
<INS> </INS> # 新しい部分
<DEL> </DEL> # 古い部分
# --------- 「H1」〜「H6」要素
<H1> </H1>
<H2> </H2>
<H3> </H3>
<H4> </H4>
<H5> </H5>
<H6> </H6>
# --------- ルビ
<RUBY> </RUBY> # RUBY 全体
<RB> </RB> # ルビをふる対象
<RT> </RT> # ルビ文字列
<RP> </RP> # 括弧を指定
#### これでタグの設定は終わりです。
--- --- --- TAG END --- --- ---
|
このタグリストに載っているタグが使えます。もし制限したい場合は、気に入らないタグ行を消去するだけです。あとで付け足せるように、行を消去するよりも、行頭に半角 # を足してコメント化する方がよいでしょう。
文法を解説します。
■ 3. フォームスイッチ
フォームとして使う変数を設定します。また、フォーム変数のデフォルトの値もここで設定します。たとえば初期状態の件数を「300 件表示」にしたりすることができます。
#-------------------------------------------------------------------#
# ===================================================== #
# フォームスイッチ #
# ===================================================== #
#-----------------------------------------------------[CommuniCa 5]-#
# フォーム変数として許可する変数名を書きます。
# ここに記載されていないフォーム変数は、受け付けません。
#
# line を削ると、画面から消えてしまったログの回覧が不可能になります。
# write を削ると、書きこみが不可能になります。(プレビューは可能です。)
# line を残して全部削ると、閲覧専用モードになります。(ログ閲覧のみ)
%DEFAULT = (
"name" => '', # 名前 : (デフォルト例:'匿名希望')
"color" => '000000', # 名前の色
"seq" => '0', # ログの表示順序[0:逆順(上が最新)、1:昇順]
"seek" => '0', # ログの検索順序[0:末尾から読む、1:先頭から読む]
"line" => '20', # ログ表示行数 : (デフォルト例: '20' )
"return" => 'off', # 改行反映[on:改行反映、off:HTMLどおり]
"cookie" => 'off', # クッキー[on:有効、off:無効](デフォルト無効にする) "msg" => '', # 書き込みメッセージ
"write" => '', # 書き込みボタン
);
$CONFIG{"form_allow"} = [ keys %DEFAULT ];
|
また、ここで設定されなかったフォーム変数については、CommuniCa は無視してしまいます。もしフォーム変数を追加するような改造を加えた時は、フォームスイッチの項目も追加しておきましょう。
■ 4. クッキー設定
通常、設定を変更する必要がありません。
#-------------------------------------------------------------------#
# ===================================================== #
# クッキー設定 #
# ===================================================== #
#-----------------------------------------------------[CommuniCa 5]-#
#
# ・Cookie スイッチ
# 0: 全く Cookie を扱わない。
# 1: ラベルの一致した Cookie だけを受信し、送信する。
# 2: 可能な限り Cookie を反映する。送信は普通に。
$CONFIG{"cookie_accept"} = 2;
# ・Cookie を反映するフォーム
$CONFIG{"cookie_allow"} = ["name", "color", "line", "url", "email", "cookie"];
# ・Cookie の環境設定
# [NAME] Cookie の識別子です。NAME をそろえると Cookie を共有できます。
# [Expires] Cookie の賞味期限(秒単位)
# [Path] Cookie を有効にするパス名。値が数値の場合は、パス階層数を示します。
# [Domain] Cookie を有効にするドメイン。指定する必要はありません。
$CONFIG{"cookie_name"} = '';
$CONFIG{"cookie_expires"} = 90*24*60*60; # 90 日
$CONFIG{"cookie_path"} = '1'; # 1 の場合 http://domain/~user/ まで
$CONFIG{"cookie_domain"} = '';
|
クッキーの理解には、詳しい知識が必要です。通常は、特に変更の必要はありません。
cookie_accept(Cookie スイッチ)の挙動は柔軟ですが複雑です。通常は 2 で構いません。複数の CommuniCa を設置した場合に、2 の設定はとても便利に働きます。掲示板Aと掲示板Bがあり、掲示板Aでクッキーを受け取ったとします。ここで初めて掲示板Bへ行った時、cookie_accept が 2 に設定されていれば、できる限り掲示板Aのクッキーを受信し、掲示板Bの初期設定に反映させます。ですので、掲示板Bではまだクッキーを有効にしていないのにも関わらず、すでに名前の欄には名前が埋め込まれていることでしょう。しかし、これはクッキーを共有しているということではありません。掲示板Bでクッキーを食べた瞬間、掲示板Aのクッキーとは全く独立し、お互いのクッキーが干渉しあうことはありません。
cookie_allow(Cookie を反映するフォーム)は、ここに設定されたフォーム変数について、クッキー内に保存します。
cookie_name(Cookie の識別子)に何か文字列を指定すると、クッキーを共有することができます。掲示板Aと掲示板Bで共有されたクッキーは、片方で変更があると、もう片方にも影響を及ぼします。
cookie_expires(Cookie の賞味期限)は、クッキーが廃棄されるまでの秒数を指定してください。一度クッキーを受け取ると、アクセスがあるたびにクッキーは毎回更新され、毎回賞味期限が更新されます。賞味期限90日というのは、最後にアクセスがあってから、90日後にクッキーが廃棄されます。
cookie_path(Cookie を有効にするパス名)は、数字で指定します。0 の場合、クッキーは http://domain/ 全体のアクセス時に送信されます。初期状態では 1 で http://domain/~user/ 以下のアクセス時に送信されます。数字は、URL 内のドメイン以降のスラッシュ数になります。
cookie_domain(Cookie を有効にするドメイン)は、空白の場合、CGI が設定されているサーバとなります。何らかの理由でクッキーを CGI が設定されているサーバにクッキーを有効にしたい場合、ここに http からはじまるドメイン名を書いてください。しかしほとんどのブラウザは、このドメインを超えるクッキー送信を拒否します。