PbsChat3.0Lite

PbsChat3.0β12ダウンロード

更新日:2015年4月3日

使い方

admin.phpをテキストエディタで開いてユーザー名とパスワードを指定します。
解凍後のファイルをすべてアップロードします。
ブラウザでadmin.phpにアクセスし、ルームの追加・設定を行ってください。

対応予定がない機能

プロフィール登録をメールでお知らせ
私書箱通知をメールでお知らせ
プロフィールの項目名の一括設定
フレーム版での入室中の設定変更
JavaScript・CSSが使えないブラウザへの対応
同じブラウザ・違う名前での入室

PbsChat2から3への変更点

使用条件

PHP5以上(SQLite3が使用できること)
JavaScript・CSSが使えるブラウザ
(推奨).htaccessが使用できること

追加された機能

CSRF(クロスサイトリクエストフォージェリ)対策。
BBコードの一部(b,i,u,s,color,size)に対応。
マルチルームでも重くなりにくいよう、複数のルームから同一のファイルにアクセスすることがない設計になっております。
ノーフレーム版ではベルファイルを最初の発言時に一度だけ先読みして鳴らしますので、毎回のベル読み込みが発生しません。iPhoneでもベルが鳴ります。
参加者名にカーソルを合わせると、ROM、参加者の最終リロード時間がわかります。
入室中に再度入室した場合は、入室ログが表示されません。
スマホユーザーでも使いやすいよう、フレーム無し入室が選べます。指定の秒数で自動リロードします。
自発言消しが無くなった代わりに、過去10件分の自発言の修正、削除ができます。
ダイス・ささやき発言は削除できず、修正のみとなります。
長文モードで入室すると、発言が改行できます。
入室中に、ログ履歴を見ることができます。ROM禁止チャットでも、退室前にログを取得することができます。
過去ログを日付ごとに分類して見ることができます。
名前色と発言色を違う色にすることができます。
専用プロフィールツールが付属します。
 ・簡易日記機能
 ・簡易私書箱機能
 ・チャット入室時のメンバー認証機能
ダイス・ランダムアクションを数の制限なく設置できます。(Pbschat2では5個まで)
複数ダイスを設置する場合の改造方法が簡単になりました。

削除された機能

一つのチャットに、同じブラウザ・違う名前での入室はできません。
別名で入室したい場合は、複数のブラウザをお使いください。
スマホではない携帯(ガラケー)には対応しておりません。
フレーム版での入室中の設定変更。(ノーフレーム版では可能です)

PbsChat3 ファイル説明

改造の際の参考にどうぞ。読まなくても使用はできます。

ファイル構成(room1というチャットルーム名でルームを1つ追加した場合)

+--pbschat
    .htaccess
    admin.php
    colorlist.php
    favicon.ico
    index.php
    pbschat.css
    +--default
        db.sqlite3
        dice.php
        dice.sqlite3
        dice_include.php
        easy_csft.php
        frame.php
        historyjoin.php
        historylog.php
        index.php
        insert.php
        log.php
        noframe.php
        out.php
        sasayakilist.php
        set.php
        showlog.php
        top.php
        update.php
    +--room1(defaultをディレクトリごとコピーするので同構成)
        db.sqlite3
        dice.php
        dice.sqlite3
        dice_include.php
        easy_csft.php
        frame.php
        historyjoin.php
        historylog.php
        index.php
        insert.php
        log.php
        noframe.php
        out.php
        sasayakilist.php
        set.php
        showlog.php
        top.php
        update.php
    +--profile
        +--img
        delete.php
        diary.sqlite3
        diaryedit.php
        diarylist.php
        diaryshow.php
        diarywrite.php
        entry.php
        inbox.php
        index.php
        outbox.php
        portrait.php
        profile.sqlite3
        regist.php
        sendmessage.php
        show.php
        update.php

.htaccess

DBファイル(拡張子が.sqlite3のデータファイル)の中身と、チャットのデフォルト設定ディレクトリを覗けないように設定するためのものです。

IPアドレスやドメインでアクセス制限をしたい場合は、このファイルを編集します。

admin.php

管理者用ページです。
チャットのファイルをアップロードする前に、admin.phpをテキストエディタで開いて、以下の項目を設定してください。

// ログインユーザーとパスワード
$user = ‘user’;
$password = ‘1234’;
デフォルトルームの名称は、特に変更する必要はありません。

colorlist.php

チャットの入室画面で、名前色と発言色をクリックしたときに表示されるカラーリストです。
カラーの追加や削除を行えます。
初期状態ははJIS慣用色名の269色となっております。
色は改行で区切ります。

favicon.ico

お好きなファビコンファイルに入れ替えてお使いください。

index.php

チャットルーム一覧・参加者情報

pbschat.css

チャットとプロフィールのcss

default/db.sqlite3

ルーム設定・入室者情報・チャットログを記録したDB(データベース)ファイルです。
おすすめフリーソフトで紹介しているtksqlite.exeで中身を見ることができます。

default/dice.php

ダイスフォームを記入するファイルです。
ブログで紹介している拡張機能・ダイスを追加したい時に、コピーしたコードを貼り付けてください。
管理画面からチャットルームを作成すると、新たにホスト側にチャットルームのディレクトリが作成されますので、チャットルームごとのdice.phpを作成して該当ディレクトリにアップロードすることで、ルームごとに異なったダイスを使うことができます。

default/dice.sqlite3

ダイスの情報を記録するためのDBファイルです。
通常の6面ダイスやランダムアクションなどでは使用しません。
危機一髪・闇鍋・マガジンラックなどで使用します。
一つのDBファイルで20種類のダイスまで対応します。

default/dice_include.php

ダイスの処理を記入するファイルです。
ダイスフォームに対応した処理を記入しておく必要があります。
複数同時にダイスが実行された場合は、上から順番に発言に追加されます。

default/easy_csrf.php

CSRFを防ぐための処理をするファイルです。
参考サイト:PHPセキュリティ対策

default/frame.php

フレーム版で入室した場合の処理をするファイルです。
デフォルトのフレームの高さを変更したい場合にはこのファイルを変更します。

default/historyjoin.php

参加履歴。
参加履歴は、過去ログから入室と退室のログを抜き出しているだけですので、ログが消えれば同時に参加履歴も消えます。

表示する件数の調整をしたい場合は、LIMIT 20の数値部分を書き換えてください。

$sql = "SELECT nc, hc, gk, nm, wsa, dice1, hg, dice2, strftime('%m/%d-%H:%M:%S', ht) as ht, pr, id FROM log WHERE pr=4 or pr=5 ORDER BY log_idx DESC LIMIT 20";

default/historylog.php

入室中のログ閲覧。

初期状態では、過去10時間分のログを表示します。
変更したい場合は、’-10 hours’の数値を変更してください。

$sql = "SELECT nc, hc, gk, nm, wsa, dice1, hg, dice2, strftime('%m/%d-%H:%M:%S', ht) as ht, pr, id FROM log WHERE (pr=1 or pr=2 or pr=4 or pr=5 or (pr=3 and (wsa='ALL' or wsa='$snm' or nm='$snm'))) and ht>datetime('now','localtime','-10 hours') ORDER BY log_idx";

default/index.php

入室画面。

default/insert.php

チャットログの書き込み処理

default/log.php

入室中のログ表示

default/noframe.php

ノーフレーム版での入室処理・発言フォーム

default/out.php

退室処理。

default/sasayakilist.php

[ささやき]をクリックした時に読み込まれる、入室者のリスト

default/set.php

設定ファイル

default/showlog.php

過去ログ閲覧

default/top.php

フレーム版で入室した場合の上フレーム・発言フォーム

default/update.php

発言修正・削除

修正できる件数を10件から変更したい場合は、LIMIT 10の部分の数値を書き換えてください。
「nm=’$snm’ and ip=’”.$_SERVER[‘REMOTE_ADDR’].”‘ and 」までを削除すると、自分以外の発言の修正・削除も可能になります。

$stmt = $db->prepare("SELECT log_idx, hg, pr FROM log WHERE nm='$snm' and ip='".$_SERVER['REMOTE_ADDR']."' and pr<4 ORDER BY log_idx DESC LIMIT 10");