<?php
/*
- * Ajax Chat for TRPG ver.1.0.1
+ * Ajax Chat for TRPG ver.1.1
* (c)2007 Cake All righ1ts reserved.
* Mail : cake_67@users.sourceforge.jp
* Home : http://trpgtools-onweb.sourceforge.jp/
<?php
/*
- * Ajax Chat for TRPG ver.1.0.1
+ * Ajax Chat for TRPG ver.1.1
* (c)2007 Cake All righ1ts reserved.
* Mail : cake_67@users.sourceforge.jp
* Home : http://trpgtools-onweb.sourceforge.jp/
// データがなければ終了
// last_idで終点判断
if(unit[0] && last_id < unit[0]){
- text[i] = setData(unit);
+ text[i] = setData(unit);
} else {
break;
}
window.location.reload();
}
+// 遅延関数(http://zombiebook.seesaa.net/article/26143018.html)
+function wait(fn, tm){
+ return function (){
+ var slf = this, arg = arguments;
+ setTimeout(function (){fn.apply(slf, arg);}, tm);
+ }
+}
+
// リフレッシュ
function clearLog(){
+ $.ajax({
+ type: "GET",
+ ifModified: false,
+ url: logfile,
+ success: function(data){
+ var recent = data.split('\n');
+ var text = new Array();
+ $(".com_row").remove();
+ for(var i=0;i<recent.length; i++){
+ var unit = recent[i].split('<>');
+ if (unit[0]) {
+ text[i] = setData(unit);
+ }
+ }
+ var text_rev = text.reverse();
+ for(var i=0;i<text_rev.length; i++){
+ //出力
+ if(text_rev[i]){
+ $("#online").after(text_rev[i]);
+ }
+ }
+ }
+ });
+}
+
+function clearLog2(){
$(".com_row").remove();
$.ajax({
type: "GET",
//行番号:最新行
var last_id_tag = '<span id="id" style="display:none;">'+unit[0]+'</span>';
//データの整形
- var name = unit[1];
- var pc = unit[2];
- var color = unit[3];
- var com = unit[4);
+ var name = decodeURIComponent(unit[1]);
+ var pc = decodeURIComponent(unit[2]);
+ var color = decodeURIComponent(unit[3]);
+ var com = decodeURIComponent(unit[4]);
var d = new Date();
d.setTime(unit[5]*1000);
var year = d.getYear();
if ($(window.parent.document.getElementById("my_hash")).attr("value") == unit[10]) var whisper = 'from'
}
if(unit[11] == '1' && unit[12]) {
- var status = unit[12];
+ var status = decodeURIComponent(unit[12]);
}
// 行の整形
<?php
/*
- * Ajax Chat for TRPG ver.1.0.1
+ * Ajax Chat for TRPG ver.1.1
* (c)2007 Cake All righ1ts reserved.
* Mail : cake_67@users.sourceforge.jp
* Home : http://trpgtools-onweb.sourceforge.jp/
require_once 'trpgchat-ini.php';
/* メンバーチェッカー */
-function member_checker($name='', $hash='', $mode='', $now_member, $getdata_off) {
-
-//echo "1";
-//echo $name."<>".$hash."<>".$mode."<>".$getdata_off."<P>";
+function member_checker($name='', $hash='', $mode='', $now_member, $getdata_off, $lockfile2) {
// ファイルロック
$lfp2 = fopen($lockfile2,"w");\r
// 既存ファイル内容の格納
$member_data[] = file($now_member);
-//print_r($member_data);
-//echo "<P>";
+
$flag = 0;
if ($member_data[0]) {
foreach ($member_data[0] as $k => $v) {
$member[$k] = explode("<>", $v);
-//echo "<P>".$k;
-//print_r($member[$k]);
+
// ログアウト:削除
if ($mode == "out" && $member[$k][0] == $name && $member[$k][1] == $hash) {
$flag = 1;
}
$write[] = implode("<>",$member[$k]);
-//echo "<P>icchi:";
-//print_r($write);
+
$flag = 1;
// ROM更新時間($getdata_off)x10(秒)以内の名前のみ保存:それ以上経過した名前は削除
} elseif ((time() - $member[$k][2]) < ($getdata_off * 10)) {
-// $write[] = implode("<>",$member[$k]);
$write[] = $v;
-//echo "<P>pass:";
-//print_r($write);
+
}
}
}
$write[] = $name."<>".$hash."<>".time()."<>".time()."<>\n";
}
-//echo "<P>";
-//print_r($write);
-//exit;
// ログファイル更新
$fpm = @fopen($now_member, "w+") or die("ログファイルを開けません2");
//$bom = "\xef\xbb\xbf";
<?php
/*
- * Ajax Chat for TRPG ver.1.0.1
+ * Ajax Chat for TRPG ver.1.0
* (c)2007 Cake All righ1ts reserved.
* Mail : cake_67@users.sourceforge.jp
* Home : http://trpgtools-onweb.sourceforge.jp/
<?php
/*
- * Ajax Chat for TRPG ver.1.0.1
+ * Ajax Chat for TRPG ver.1.1
* (c)2007 Cake All righ1ts reserved.
* Mail : cake_67@users.sourceforge.jp
* Home : http://trpgtools-onweb.sourceforge.jp/
} elseif ($_REQUEST['mode'] == 'write_log') {
write_log($past_dir, $master_past_dir, $past_log, $masterpass, $color_system, $copyright, $_REQUEST['datetime'], $_REQUEST['whisper'], $_REQUEST['filename']);
if ($_REQUEST['delete']) {
- $fp = fopen($recent_log, "w");
+ // 直近の過去ログは表示を残す
+ // ファイルロック
+ $lfp = fopen($lockfile,"w");
+ stream_set_write_buffer($lfp, 0);
+ flock($lfp,LOCK_EX);
+
+ // 行番号を書き換えて保管
+ $log = file($recent_log);
+ $count_log = count($log);
+ $fp = @fopen($recent_log, "w") or die("ログファイルを開けません。");
+ if ($log[0]) {
+ foreach ($log as $k => $v) {
+ $num = $count_log - $k;
+ fwrite($fp, preg_replace("/^([0-9]{1,})<>.*/U", "$num<>", $v, 1));
+ }
+ }
fclose($fp);
+
+ // 以前の過去ログは全消去
$fp = fopen($past_log, "w");
fclose($fp);
+
+ fflush($lfp);
+ fclose($lfp);
}
header("Location: $pastlog_maker?admin_pwd=$masterpass&mode=write_end");
exit;
<?php
/*
- * Ajax Chat for TRPG ver.1.0.1
+ * Ajax Chat for TRPG ver.1.0
* (c)2007 Cake All righ1ts reserved.
* Mail : cake_67@users.sourceforge.jp
* Home : http://trpgtools-onweb.sourceforge.jp/
<?php
/*
- * Ajax Chat for TRPG ver.1.0.1
+ * Ajax Chat for TRPG ver.1.0
* (c)2007 Cake All righ1ts reserved.
* Mail : cake_67@users.sourceforge.jp
* Home : http://trpgtools-onweb.sourceforge.jp/
<?php
/*
- * Ajax Chat for TRPG ver.1.0.1
+ * Ajax Chat for TRPG ver.1.1
* (c)2007 Cake All righ1ts reserved.
* Mail : cake_67@users.sourceforge.jp
* Home : http://trpgtools-onweb.sourceforge.jp/
// 管理者用パスワード
$masterpass = "password";
+
// 入室前表示(改行のみタグ不要。他はHTMLタグ有効)
$help = '「ダイス」ヘルプ
発言欄で[2d6+2*2-3]のように入力してください。
HTMLタグは無効です。
-動作確認:IE6.0、FireFox2.0、LunaScape4.1、Opera9.0、Netscape 7.1
+動作確認:IE6.0、LunaScape4.1、Opera9.0、Netscape 7.1、(FireFox2.0)
';
// メソッド(通常POST。一部レンタルサーバなど、POSTが使えない環境ではGETにしてください。
- $method = 'GET';
+ $method = 'POST';
// 書きこみ禁止IP
$block_ip = array(
'1D6',
'3D6',
'1D8',
+ '1D10',
'1D20',
'1D100',
);
ini_set('session.use_cookies', '0');
// 著作権とバージョン表示(改変しないでください)
-$copyright = '<a href="http://trpgtools-onweb.sourceforge.jp/" target="_blank">Ajax Chat for TRPG</a> ver.1.0.1 Copyright(c) Cake 2007 All Rights Reserved.<br>
+$copyright = '<a href="http://trpgtools-onweb.sourceforge.jp/" target="_blank">Ajax Chat for TRPG</a> ver.1.1 Copyright(c) Cake 2007 All Rights Reserved.<br>
* icons:<a href="http://snow.if.tv/" target="_blank">Petite Prier</a> Thanks!';
<?php
/*
- * Ajax Chat for TRPG ver.1.0.1
+ * Ajax Chat for TRPG ver.1.1
* (c)2007 Cake All righ1ts reserved.
* Mail : cake_67@users.sourceforge.jp
* Home : http://trpgtools-onweb.sourceforge.jp/
// IPブロック
foreach ($block_ip as $v) {
- if (strstr($host, $v)) { die("書きこみできません。"); }
+ if (strstr($host, $v)) die("書きこみできません。");
}
+// PL名・コメントがなければ書込みはできない(含ロボット対策)
+if (!$_REQUEST['n']) die("書きこみできません");
+if (($_REQUEST['y'] != 'in' && $_REQUEST['y'] != 'out') && $_REQUEST['m'] == '') die("書きこみできません。");
+
// ファイルロック
$lfp = fopen($lockfile,"w");
stream_set_write_buffer($lfp, 0);
$log[] = file($recent_log);
// 受信データの整形
-foreach($_GET as $k => $v) {
- $data[$k] = htmlspecialchars($v);
+foreach($_REQUEST as $k => $v) {
+ if ($k != 'ajaxchat' && $k != 'sboard_settings') { $data[$k] = htmlspecialchars($v); }
}
+print_r($data);
// PC名がない場合PL名
if (!$data['c']) $data['c'] = $data['n'];
fclose($lfp);
//参加者チェッカーに書き込み
-member_checker($data['n'], $pwd, $data['y'], $now_member, $getdata_off);
+member_checker($data['n'], $pwd, $data['y'], $now_member, $getdata_off, $lockfile2);
1;