概要と動作デモ

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

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

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

動作環境

以下の環境で動作すると思われます。

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

利用許諾

いわゆるX11ライセンス(MITライセンス)の下で自由にご利用いただけます。

ダウンロード

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

以前のバージョンのデータファイルは一旦クリア(空ファイルに)してください。

設置方法

初期設定

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

編集したファイルはBOMなしUTF-8(UTF-8Nとも呼ばれます)で保存してください。対応するテキストエディタが必要です。Windows XPのメモ帳では駄目です。

サーバに転送

デフォルトでは以下のような配置を想定しています。

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

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

より安全な設置方法

例えば以下のように、公開する必要の無いファイルを非公開ディレクトリに移動すると、より安全に運用できます。

上記のディレクトリ構成例では、データファイルおよびテンプレートのパスを以下のように変更する必要があります。

// データファイルのパス
define('DATA_DIR', '../../chat/data/');
:
// テンプレートのパス
define('TEMPLATE_DIR', '../../templates/');

おまけ

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

<?php
$names = array();
foreach (file('./data/sessions.dat.cgi') as $line) {
	list(,, $name) = split("\t", rtrim($line));
	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 更新内容
2012-08-20 3.0
  • 動作環境を変更 (PHP4 -> PHP5等) 。
  • スクリプトの文字コードをShift_JISからUTF-8に変更。
  • 新しい発言の背景が光るようにした。
  • 発言の文字色を選ぶフォームを追加。
  • リロード間隔を選ぶフォームを削除。
  • いくつかの設定項目を削除。
  • 携帯端末や小さい画面のためのCSSルールを追加。
2008-07-13 2.0.2
  • 参加者名のサニタイズ漏れを修正。
2007-08-24 2.0.1
  • 参加者の人数を更新し忘れていたのを修正。
2007-05-05 2.0
  • JavaScriptによるHTTPリクエストをサポート。
  • 同じ名前での多重ログインを拒否するようにした。
  • HTMLのマークアップを変更。
  • セッション切れまでの秒数の設定項目を追加。
  • セッション切れを発言ログで通知するようにした。
2007-04-21 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
  • 公開
This is Index of confetto. © 2003-2012 confetto.