OSDN Git Service

辛夷祭初日の緊急修正多数。
[h58pcdgame/GameScriptCoreLibrary.git] / www / update.php
1 <?php\r
2 //FOR DEBUG\r
3 mysqli_report(MYSQLI_REPORT_ERROR);\r
4 \r
5 require("header.php");\r
6         //MySQL 更新データの仕様\r
7         // URL引数でUserID(uid)を渡す。\r
8         // update.php?uid=xxx\r
9         //\r
10         // \r
11 \r
12 $db = new mysqli('localhost', DATABASE_USER, DATABASE_PWD, DATABASE_NAME);\r
13 if (mysqli_connect_error()) {\r
14         responseError();\r
15 }\r
16 // 文字化け防止\r
17 $db->set_charset("utf8");\r
18 \r
19 if(isset($_GET['uid']) && isset($_GET['action'])){\r
20         $uid = $_GET['uid'];\r
21         $action = $_GET['action'];\r
22         //ステージ名の取得\r
23         $stmt = $db->prepare(QUERY_SELECT_USER_STAGE_AND_TIMESTAMP);\r
24         $stmt->bind_param(QUERY_SELECT_USER_STAGE_AND_TIMESTAMP_TYPES, $uid);\r
25         $stmt->execute();\r
26         if($stmt->errno != 0){\r
27                 exit("error0");\r
28         }\r
29         //クエリ成功\r
30         $stmt->store_result();\r
31         if($stmt->num_rows == 0){\r
32                 exit("error1");\r
33         }\r
34         $stmt->bind_result($stgName, $lastTimeStamp);\r
35         $stmt->fetch();\r
36         $stmt->close();\r
37         \r
38         $request_param = array();\r
39         foreach ( $_POST as $k => $v){\r
40                 // URL デコードを行い値を連想配列に格納する\r
41                 $request_param{"$k"} = urldecode($v);\r
42         }\r
43         \r
44         if(strcmp($action, 'add') == 0){\r
45                 //オブジェクトをデータベースに追加\r
46                 //postデータは、"origin.x,origin.y,speed.x,speed.y,className,attribute,constructorArgs"\r
47                 //retvデータは、"[timestamp,[objectID, ...], [[objectID,origin.x,origin.y,speed.x,speed.y,className,attribute,constructorArgs]...]]"\r
48                 $retarray = array();\r
49                 foreach($request_param as $aParam){\r
50                         $subparam = explode('|', $aParam);\r
51                         $stmt = $db->prepare(QUERY_ADD_OBJECT);\r
52                         $stmt->bind_param(QUERY_ADD_OBJECT_TYPES, $subparam[0], $subparam[1], $subparam[2], $subparam[3], $stgName, $subparam[4], $subparam[5], $subparam[6],$uid, getTimeStampMs(), getTimeStampMs());\r
53                         $stmt->execute();\r
54                         if($stmt->errno != 0){\r
55                                 exit("error3");\r
56                         }\r
57                         array_push($retarray, $db->insert_id);\r
58                         $stmt->close();\r
59                 }\r
60                 //出力\r
61                 echo("[" . getTimeStampMs() . ",[");\r
62                 foreach($retarray as $v){\r
63                         echo($v . ",");\r
64                 }\r
65                 echo("],");\r
66                 echo(getAllOtherUserObjectArrayString($db, $uid, $stgName));\r
67                 echo("]");\r
68         } else if(strcmp($action, 'refresh') == 0){\r
69                 //渡されたオブジェクトのデータ更新\r
70                 //postデータは、"objectID,origin.x,origin.y,speed.x,speed.y,attribute"\r
71                 foreach($request_param as $aParam){\r
72                         $subparam = explode('|', $aParam);\r
73                         $stmt = $db->prepare(QUERY_UPDATE_STAGE_OBJECT);\r
74                         $stmt->bind_param(QUERY_UPDATE_STAGE_OBJECT_TYPES, $subparam[1], $subparam[2], $subparam[3], $subparam[4], $subparam[5], getTimeStampMs(), $stgName, $subparam[0]);\r
75                         $stmt->execute();\r
76                         if($stmt->errno != 0){\r
77                                 exit("error14");\r
78                         }\r
79                         $stmt->close();\r
80                 }\r
81                 \r
82                 \r
83                 //retv[2]:追加リスト\r
84                 //[objectID,origin.x,origin.y,speed.x,speed.y,className,attribute,constructorArgs]"\r
85                 $retv2 = array();\r
86                 $stmt = $db->prepare(QUERY_SELECT_ADDED_OBJECT);\r
87                 $stmt->bind_param(QUERY_SELECT_ADDED_OBJECT_TYPES, $stgName, $uid, $lastTimeStamp);\r
88                 $stmt->execute();\r
89                 if($stmt->errno != 0){\r
90                         exit("error7");\r
91                 }\r
92                 $result = $stmt->get_result();\r
93                 for($i = 0; $i < $result->num_rows; $i++){\r
94                         $tmpAry = $result->fetch_array(MYSQLI_NUM);\r
95                         array_push($retv2, "[" . $tmpAry[0] . "," . $tmpAry[1] . "," . $tmpAry[2] . "," . $tmpAry[3] . "," . $tmpAry[4] . ",\"" . $tmpAry[5] . "\",\"" . $tmpAry[6] . "\",\"" . $tmpAry[7] . "\"," . $tmpAry[8] . "]");\r
96                 }\r
97                 $stmt->close();\r
98                 //retv[1]:更新リスト\r
99                 //[objectID,origin.x,origin.y,speed.x,speed.y,className,attribute]"\r
100                 $retv1 = array();\r
101                 $stmt = $db->prepare(QUERY_SELECT_UPDATED_OBJECT);\r
102                 if(!$stmt){\r
103                         exit("error:" . $db->error);\r
104                 }\r
105                 $stmt->bind_param(QUERY_SELECT_UPDATED_OBJECT_TYPES, $stgName, $uid, $lastTimeStamp, $lastTimeStamp);\r
106                 $stmt->execute();\r
107                 if($stmt->errno != 0){\r
108                         exit("error8");\r
109                 }\r
110                 $result = $stmt->get_result();\r
111                 for($i = 0; $i < $result->num_rows; $i++){\r
112                         echo(" ");\r
113                         $tmpAry = $result->fetch_array(MYSQLI_NUM);\r
114                         array_push($retv1, "[" . $tmpAry[0] . "," . $tmpAry[1] . "," . $tmpAry[2] . "," . $tmpAry[3] . "," . $tmpAry[4] . ",\"" . $tmpAry[5] . "\",\"" . $tmpAry[6] . "\"]");\r
115                 }\r
116                 $stmt->close();\r
117                 //retv[3]:削除リスト\r
118                 //objectID\r
119                 $retv3 = array();\r
120                 $stmt = $db->prepare(QUERY_SELECT_DELETED_OBJECT);\r
121                 $stmt->bind_param(QUERY_SELECT_DELETED_OBJECT_TYPES, $stgName, $uid, $lastTimeStamp);\r
122                 $stmt->execute();\r
123                 if($stmt->errno != 0){\r
124                         exit("error9");\r
125                 }\r
126                 $result = $stmt->get_result();\r
127                 for($i = 0; $i < $result->num_rows; $i++){\r
128                         $tmpAry = $result->fetch_array(MYSQLI_NUM);\r
129                         array_push($retv3, $tmpAry[0]);\r
130                 }\r
131                 $stmt->close();\r
132                 //retv[4]:ユーザーリスト\r
133                 //userID, userName\r
134                 $retv4 = array();\r
135                 $stmt = $db->prepare("select id, name from authUserTable");\r
136                 $stmt->execute();\r
137                 if($stmt->errno != 0){\r
138                         exit("error5673");\r
139                 }\r
140                 $result = $stmt->get_result();\r
141                 for($i = 0; $i < $result->num_rows; $i++){\r
142                         $tmpAry = $result->fetch_array(MYSQLI_NUM);\r
143                         array_push($retv4, $tmpAry[0] . ":\"" . $tmpAry[1] . "\"");\r
144                 }\r
145                 $stmt->close();\r
146                 //出力\r
147                 echo("[");\r
148                 echo(getTimeStampMs());\r
149                 echo(",[");\r
150                 foreach($retv1 as $v){\r
151                         echo($v . ",");\r
152                 }\r
153                 echo("],[");\r
154                 foreach($retv2 as $v){\r
155                         echo($v . ",");\r
156                 }\r
157                 echo("],[");\r
158                 foreach($retv3 as $v){\r
159                         echo($v . ",");\r
160                 }\r
161                 echo("],{");\r
162                 foreach($retv4 as $v){\r
163                         echo($v . ",");\r
164                 }\r
165                 echo("}]");\r
166         }\r
167         updateUserTimestamp($db, $uid);\r
168         exit();\r
169 }\r
170 \r
171 function getAllOtherUserObjectArrayString($db, $userID, $stageName)\r
172 {\r
173         $retary = array();\r
174         $stmt = $db->prepare(QUERY_SELECT_ALL_OTHER_USER_OBJECT);\r
175         $limittime = getTimeStampMs() - OBJECT_ALIVE_TIME_MS;\r
176         $stmt->bind_param(QUERY_SELECT_ALL_OTHER_USER_OBJECT_TYPES, $stageName, $userID, $limittime);\r
177         $stmt->execute();\r
178         if($stmt->errno != 0){\r
179                 exit("error745");\r
180         }\r
181         $result = $stmt->get_result();\r
182         for($i = 0; $i < $result->num_rows; $i++){\r
183                 $tmpAry = $result->fetch_array(MYSQLI_NUM);\r
184                 array_push($retary, "[" . $tmpAry[0] . "," . $tmpAry[1] . "," . $tmpAry[2] . "," . $tmpAry[3] . "," . $tmpAry[4] . ",\"" . $tmpAry[5] . "\",\"" . $tmpAry[6] . "\",\"" . $tmpAry[7] . "\"," . $tmpAry[8] . "]");\r
185         }\r
186         $stmt->close();\r
187         $retstr = "[";\r
188         foreach($retary as $v){\r
189                 $retstr = $retstr . $v . ",";\r
190         }\r
191         $retstr = $retstr . "]";\r
192         return $retstr;\r
193 }\r
194 \r
195 //\r
196 // response\r
197 //\r
198 //[\r
199 //      [timestamp],\r
200 //      \r
201 //]\r
202 function responseError()\r
203 {\r
204         exit("[0, 0, null];");\r
205 }\r
206 \r
207 ?>