OSDN Git Service

ece239c16f8156cee05063a2582e364ef3316980
[trpgtools-onweb/AjaxChat.git] / lib / member_check.php
1 <?php
2 /*
3  * Ajax Chat for TRPG ver.2.5
4  * (c)2007-2009 Cake All rights reserved.
5  * Mail : cake_67@users.sourceforge.jp
6  * Home : http://trpgtools-onweb.sourceforge.jp/
7  */
8
9 /* 現在の参加者データ取得 */
10 function get_member_log() {
11     $member_data = file(NOW_MEMBER);
12     if ($member_data) {
13         foreach ($member_data as $k => $v) {
14             $member[$k] = explode("<>", $v);
15         }
16     }
17     return $member;
18 }
19
20 /* メンバーチェッカー */
21 function member_checker($name= '', $hash= '', $mode= '', $is_mobile=false) {
22
23     // ファイルロック
24     $lfp2 = fopen(LOCK2,"w");\r
25     stream_set_write_buffer($lfp2, 0);
26     flock($lfp2,LOCK_EX);
27
28     // 初期化
29     $member_data = array();
30     $member = array();
31     $write = array();
32
33     // 既存ファイル内容の格納
34     $member_data = file(NOW_MEMBER);
35
36     $flag = 0;
37     if ($member_data) {
38         foreach ($member_data as $k => $v) {
39             $member[$k] = explode("<>", $v);
40             $mname = $member[$k][0];
41             $mhash = $member[$k][1];
42
43             // ログアウト:削除
44             if ($mode == "out" && $mname == $name && $mhash == $hash) {
45                 $flag = 1;
46             // 名前とパスが一致すれば在室時間更新
47             } elseif ($mname == $name && $mhash == $hash) {
48                 $member[$k][2] = time();
49                 // コメント時、発言時間更新
50                 if ($mode=="com") {
51                     $member[$k][3] = time();
52                 }
53
54                 $write[] = implode("<>",$member[$k]);
55
56                 $flag = 1;
57                 // ROM更新時間(GETDATA_OFF)x10(秒)以内の名前のみ保存:それ以上経過した名前は削除
58             } elseif ((time() - $member[$k][2]) < (GETDATA_OFF * 10)) {
59                 $write[] = $v;
60             }
61         }
62     }
63     // ログに名前追加
64     if ($mode != "out" && $flag == 0 && $name) {
65         $write[] = $name."<>".$hash."<>".time()."<>".time()."<>".$is_mobile."\n";
66     }
67
68     // ログファイル更新
69     $fpm = @fopen(NOW_MEMBER, "w+") or error("ログファイルを開けません2");
70     //$bom = "\xef\xbb\xbf";
71     //fwrite($fpm, $bom);
72
73         foreach($write as $k => $v) {
74             fwrite($fpm, $v);
75         }
76     fclose($fpm);
77
78     // ロック解除
79     fflush($lfp2);
80     fclose($lfp2);
81 }
82 ?>