OSDN Git Service

ver1.1
authorcake_67 <cake_67@46fa8b77-3530-0410-9d82-d95c44d28aba>
Wed, 7 Oct 2009 01:09:14 +0000 (01:09 +0000)
committercake_67 <cake_67@46fa8b77-3530-0410-9d82-d95c44d28aba>
Wed, 7 Oct 2009 01:09:14 +0000 (01:09 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/trpgtools-onweb/src/trunk/AjaxChatForTRPG@17 46fa8b77-3530-0410-9d82-d95c44d28aba

index.php
main.php
member_check.php
pastlog-ini.php
pastlog.php
pastlog_index.php
pastlog_main.php
trpgchat-ini.php
write.php

index 2202216..7455735 100644 (file)
--- a/index.php
+++ b/index.php
@@ -1,6 +1,6 @@
 <?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/
index a31148c..0b83cd0 100644 (file)
--- a/main.php
+++ b/main.php
@@ -1,6 +1,6 @@
 <?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/
@@ -72,7 +72,7 @@ function getLog(){
         // データがなければ終了
             // last_idで終点判断
             if(unit[0] && last_id < unit[0]){
-                text[i] = setData(unit);
+                    text[i] = setData(unit);
             } else {
                 break;
             }
@@ -136,8 +136,42 @@ function logout() {
     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",
@@ -187,10 +221,10 @@ function setData(unit) {
     //行番号:最新行
     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();
@@ -213,7 +247,7 @@ function setData(unit) {
         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]);
     }
 
     // 行の整形
index 6a14cf4..e7fc3d2 100644 (file)
@@ -1,6 +1,6 @@
 <?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
@@ -40,14 +37,12 @@ function member_checker($name='', $hash='', $mode='', $now_member, $getdata_off)
 
     // 既存ファイル内容の格納
     $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;
@@ -60,15 +55,12 @@ function member_checker($name='', $hash='', $mode='', $now_member, $getdata_off)
                 }
 
                 $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);
+
             }
         }
     }
@@ -77,9 +69,6 @@ function member_checker($name='', $hash='', $mode='', $now_member, $getdata_off)
         $write[] = $name."<>".$hash."<>".time()."<>".time()."<>\n";
     }
 
-//echo "<P>";
-//print_r($write);
-//exit;
     // ログファイル更新
     $fpm = @fopen($now_member, "w+") or die("ログファイルを開けません2");
     //$bom = "\xef\xbb\xbf";
index 94e76a8..cddbad7 100644 (file)
@@ -1,6 +1,6 @@
 <?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/
index d31e202..aabcfac 100644 (file)
@@ -1,6 +1,6 @@
 <?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/
@@ -86,10 +86,30 @@ if ($_REQUEST['mode'] == 'delete_log_confirm') {
 } 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;
index f5fbaaf..0f6c5c4 100644 (file)
@@ -1,6 +1,6 @@
 <?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/
index d5a1279..74af05a 100644 (file)
@@ -1,6 +1,6 @@
 <?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/
index 974647e..208a0e5 100644 (file)
@@ -1,6 +1,6 @@
 <?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/
@@ -31,6 +31,7 @@ $home = 'http://trpgtools-onweb.sourceforge.jp/';
 
     // 管理者用パスワード
 $masterpass = "password";
+
     // 入室前表示(改行のみタグ不要。他はHTMLタグ有効)
 $help = '「ダイス」ヘルプ
 発言欄で[2d6+2*2-3]のように入力してください。
@@ -42,10 +43,10 @@ $help = '「ダイス」ヘルプ
 
 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(
@@ -62,6 +63,7 @@ $preset_dice = array(
     '1D6',
     '3D6',
     '1D8',
+    '1D10',
     '1D20',
     '1D100',
 );
@@ -150,7 +152,7 @@ ini_set('mbstring.output_hanler','mb_output_handler');
 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. Copyright(c) Cake 2007 All Rights Reserved.<br>
  * icons:<a href="http://snow.if.tv/" target="_blank">Petite Prier</a> Thanks!';
 
 
index 3d8549b..682f258 100644 (file)
--- a/write.php
+++ b/write.php
@@ -1,6 +1,6 @@
 <?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/
@@ -29,9 +29,13 @@ $host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
 
 // 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);
@@ -42,9 +46,10 @@ $log = array();
 $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'];
@@ -130,7 +135,7 @@ fflush($lfp);
 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;