概要と動作デモ

PHPで書かれた簡単チャットです。非フレーム型で、JavaScriptによる自動リロード機能、在室者名を表示する機能があります。また、リロードボタンを押したときに新しい発言がない場合、ブラウザに無駄な読み込みをさせずに転送量を節約する機能があります。

バージョン2.0より、JavaScriptによるHTTP通信をサポートしました。Ajaxと呼ばれる仕組みに似たものを利用し、ページ全体を再読み込みせずに新規発言のみをダウンロードするので、以前よりもサクサクと高速に動作します。また、転送量もさらに節約できます。動作デモをお試しください。

また開発にあたり、Web裏技ミニチャット2を参考にさせていただきました。

動作環境

PHP4以上で動作すると思います(おおよそですみません)。開発に使用したのはPHP 4.4.4です。動作しない場合はエラーメッセージなどを元にご相談ください。また、JavaScriptによるHTTPリクエストを使用するためには、mbstring拡張モジュールが組み込まれている必要があります。

自動リロード機能等が使えるのは、JavaScriptに対応したわりと新しいブラウザのみです。恐らくは、MSIEならバージョン5.5以降、Netscapeならバージョン6以降で動きます。

TOK2という無料ウェブサーバでは動作しません。

利用許諾

いわゆるX11ライセンス(MITライセンスとも言います)の下で自由にご利用いただけます。X11ライセンスについては以下のページをご覧ください。

利用許諾はバージョン1.4からようやく「明記」しました。ほったらかしにしていてすみませんでした。

ダウンロード

スクリプトの文字コードはShift_JIS、改行コードはCR+LF(Windows用)です。Windows以外の環境の方は適宜改行コードを変更してください。

バージョン2.0以降、データファイルの記録方式が変わっています。バージョン1のデータファイルは一旦クリア(空ファイルに)してください。

設置方法

初期設定

"chat.php"および"chat.js"をテキストエディタで開き、冒頭の「初期設定」のうち、必要な部分をだけ書き換えてください。恐らくは何も書き換えなくても動きます。

サーバに転送

ファイル群をひとつのディレクトリにまとめて転送し、以下の表に従ってパーミッションを変更すれば設置完了です。FTP転送する際は、ファイルはすべてアスキーモード(テキストモード)で転送してください。

ファイルとパーミッション
ファイル パーミッション 解説
chat.php 604 スクリプト本体
mssg.dat 606 発言記録ファイル
name.dat 606 参加者名記録ファイル
chat.js 外部JavaScriptファイル
chat.css 外部CSSファイル

mbstringが使えない方は

ご利用のサーバにPHPのmbstringモジュールが組み込まれていない場合、JavaScriptによるHTTPリクエスト機能が使えません(文字化けします)。このようなサーバをお使いの方は以下の手順を試してみてください。

  1. "chat.php"の初期設定で、「スクリプトの文字符号化方式」をUTF-8に変更する。

    $SCRIPT_ENCODING = 'UTF-8';
  2. "chat.php"と"chat.js"をBOMなしUTF-8(UTF-8Nとも呼ばれます)で保存する。

    対応するテキストエディタが必要です。Windows XPのメモ帳では駄目です。

おまけ

以下のような簡単なPHPコードで、チャットの参加者名を別のページに埋め込むこともできます。'./name.dat' の部分を、埋め込んだページからの相対パスなどに書き換えてください。

<?php
$names = array();
foreach (file('./name.dat') as $line) {
	list(,, $name) = split("\t", rtrim($line), 3);
	array_push($names, $name);
}
echo '<p>参加者(' . count($names) . '):</p>';
if (count($names)) {
	echo '<ul>';
	foreach ($names as $name)
		echo "<li>$name</li>";
	echo '</ul>';
} else {
	echo '<p>なし</p>';
}
?>

更新履歴

更新日と公開日が数日ずれている場合があります。

スクリプトの更新履歴(新着順)
更新日 Ver 更新内容
2008-07-13 2.0.2
  • 参加者名のサニタイズ漏れを修正。
2007-08-24 2.0.1
  • 参加者の人数を更新し忘れていたのを修正。
2007-05-04 2.0
  • JavaScriptによるHTTPリクエストをサポート。
  • 同じ名前での多重ログインを拒否するようにした。
  • HTMLのマークアップを変更。
  • セッション切れまでの秒数の設定項目を追加。
  • セッション切れを発言ログで通知するようにした。
2007-04-20 1.4
  • 利用許諾を明記した。
2005-02-19 1.3
  • クッキーが文字化けすることがある不具合を修正
  • MozillaとProxomitronの併用時に表示が崩れる問題に対応
  • 情報を伝える参加者名の設定項目を追加
  • 情報を伝える参加者名を他と区別して表示できるようにした
  • 広告等挿入部の設定項目を廃止
2004-10-13 1.2.1
  • 参加者名の表示がおかしくなっていたので修正
2004-10-08 1.2
  • 入室前の画面で発言ログを隠す設定項目を追加
  • チャット参加者の人数を表示するようにした
  • 退室後の画面に「チャットに戻る」リンクを追加
2004-08-26 1.1
  • サニタイズさえきちんとしていなかったので修正(すみません)
  • スクリプトの名前を変更(旧"超簡易チャットスクリプト for PHP")
2003-11-03 1.0
  • 公開

CSSサンプル

見た目のダサさは各自でどうにかしてくださいと言いたいが為の外部CSSサンプルです。"chat.css"と置き換えるなどして使います。

バージョン2.0でHTMLが変更されたので、一旦公開を停止します。

This is Index of confetto. © 2003-2007 confetto.