OSDN Git Service

StageObject の記述を分割
[h58pcdgame/GameScriptCoreLibrary.git] / auth.php
1 <?php
2         //将来的にURLのname属性は、sqlに渡すため、エスケープして安全を確保しなければいけない。
3         //->すでにやった
4         // http://blog.image-lab.net/2012/07/phpmysql.html
5         // 接続(DB選択含む)
6         //DB:
7         //create table AuthUserTable ( id int auto_increment, name char(32), index(id));
8         //insert into AuthUserTable (name) values ('hikarupsp');
9         // 実行
10         //$query = "SELECT * FROM AuthUserTable";
11         //$stmt = $db->prepare($query);
12         //$stmt->execute();
13         // 変数のバインド
14         //$stmt->bind_result($name,$id);
15         //while ($stmt->fetch()) {
16         //      echo $name;
17         //      echo $id;
18         //}
19         
20         define("DATABASE_USER", "pcd2013devUser");
21         define("DATABASE_PWD", "MoonStone");
22         define("DATABASE_NAME", "pcd2013dev");
23         define("REGEX_SQL_QUERY_ESCAPE", "\\|\"|\'");
24         define("QUERY_SELECT_USER_ID", "SELECT id from AuthUserTable where name = ?;");
25         define("QUERY_SELECT_USER_ID_TYPES", "s");
26         define("QUERY_ADD_USER", "insert into AuthUserTable (name) values (?)");
27         define("QUERY_ADD_USER_TYPES", "s");
28
29         $db = new mysqli('localhost', DATABASE_USER, DATABASE_PWD, DATABASE_NAME);
30         if (mysqli_connect_error()) {
31                 die('接続に失敗しました。');
32         }
33         // 文字化け防止
34         $db->set_charset("utf8");
35         
36 if(isset($_GET['action']) && isset($_GET['name'])){
37         $action = $_GET['action'];
38         $name = urldecode($_GET['name']);
39         if(strcmp($action, 'join') == 0){
40                 echo("new Array(");
41                 $stmt = $db->prepare(QUERY_SELECT_USER_ID);
42                 $stmt->bind_param(QUERY_SELECT_USER_ID_TYPES, $name);
43                 $stmt->execute();
44                 // 結果の個数を確認
45                 if($stmt->errno == 0){
46                         //クエリ成功
47                         $stmt->store_result();
48                         if($stmt->num_rows == 0){
49                                 //ユーザー名はリストになかった=はじめてのひと
50                                 $stmt = $db->prepare(QUERY_ADD_USER);
51                                 $stmt->bind_param(QUERY_ADD_USER_TYPES, $name);
52                                 $stmt->execute();
53                                 if($stmt->errno == 0){
54                                         //クエリ成功
55                                         $stmt = $db->prepare(QUERY_SELECT_USER_ID);
56                                         $stmt->bind_param(QUERY_SELECT_USER_ID_TYPES, $name);
57                                         $stmt->execute();
58                                         if($stmt->errno == 0){
59                                                 //クエリ成功
60                                                 $stmt->store_result();
61                                                 if($stmt->num_rows == 0){
62                                                         //ユーザー名はリストになかった=そんな…登録したのに。あきらめてエラーを返す
63                                                         echo("0,");
64                                                 } else{
65                                                         //ユーザー名がリストにある=予想通り
66                                                         $stmt->bind_result($id);
67                                                         $stmt->fetch();
68                                                         echo($id);
69                                                         echo(",");
70                                                 }
71                                         } else{
72                                                 //クエリ失敗
73                                                 echo("0,");
74                                         }
75                                 } else{
76                                         //クエリ失敗
77                                         echo("0,");
78                                 }
79                         } else{
80                                 //すでにユーザー名がリストにある=続きからプレイ
81                                 $stmt->bind_result($id);
82                                 $stmt->fetch();
83                                 echo($id);
84                                 echo(",");
85                         }
86                 } else{
87                         //クエリ失敗
88                         echo("0,");
89                 }
90                 echo(ceil(microtime(true)*1000));
91                 echo(",'main');");
92         }
93 }
94 ?>