2 //将来的にURLのname属性は、sqlに渡すため、エスケープして安全を確保しなければいけない。
4 // http://blog.image-lab.net/2012/07/phpmysql.html
7 //create table AuthUserTable ( id int auto_increment, name char(32), index(id));
8 //insert into AuthUserTable (name) values ('hikarupsp');
10 //$query = "SELECT * FROM AuthUserTable";
11 //$stmt = $db->prepare($query);
14 //$stmt->bind_result($name,$id);
15 //while ($stmt->fetch()) {
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");
29 $db = new mysqli('localhost', DATABASE_USER, DATABASE_PWD, DATABASE_NAME);
30 if (mysqli_connect_error()) {
34 $db->set_charset("utf8");
36 if(isset($_GET['action']) && isset($_GET['name'])){
37 $action = $_GET['action'];
38 $name = urldecode($_GET['name']);
39 if(strcmp($action, 'join') == 0){
41 $stmt = $db->prepare(QUERY_SELECT_USER_ID);
42 $stmt->bind_param(QUERY_SELECT_USER_ID_TYPES, $name);
45 if($stmt->errno == 0){
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);
53 if($stmt->errno == 0){
55 $stmt = $db->prepare(QUERY_SELECT_USER_ID);
56 $stmt->bind_param(QUERY_SELECT_USER_ID_TYPES, $name);
58 if($stmt->errno == 0){
60 $stmt->store_result();
61 if($stmt->num_rows == 0){
62 //ユーザー名はリストになかった=そんな…登録したのに。あきらめてエラーを返す
66 $stmt->bind_result($id);
80 //すでにユーザー名がリストにある=続きからプレイ
81 $stmt->bind_result($id);
90 echo(ceil(microtime(true)*1000));