OSDN Git Service

Merge branch 'master' of https://scm.sourceforge.jp/gitroot/h58pcdgame/GameScriptCore...
[h58pcdgame/GameScriptCoreLibrary.git] / www / auth.php
index 785d865..989a2b2 100644 (file)
@@ -32,6 +32,7 @@ if(isset($_GET['action']) && isset($_GET['name'])){
        escapeMySQLArgumentString($name);
        
        if(strcmp($action, 'join') == 0){
+               //通常モード
                $stmt = $db->prepare(QUERY_SELECT_USER_ID);
                $stmt->bind_param(QUERY_SELECT_USER_ID_TYPES, $name);
                $stmt->execute();
@@ -74,8 +75,64 @@ if(isset($_GET['action']) && isset($_GET['name'])){
                                //すでにユーザー名がリストにある=続きからプレイ
                                $stmt->bind_result($id);
                                $stmt->fetch();
+                               responseExistUser($db, $id, getUserStage($db, $id));
+                       }
+               } else{
+                       //クエリ失敗
+                       responseError();
+               }
+       } else if(strcmp($action, 'devjoin') == 0){
+               //開発者モード
+               if(!isset($_GET['stage'])){
+                       responseError();
+               }
+               $stgName = urldecode($_GET['stage']);
+               $stmt = $db->prepare(QUERY_SELECT_USER_ID);
+               $stmt->bind_param(QUERY_SELECT_USER_ID_TYPES, $name);
+               $stmt->execute();
+               if($stmt->errno == 0){
+                       //クエリ成功
+                       $stmt->store_result();
+                       // 結果の個数を確認
+                       if($stmt->num_rows == 0){
+                               //ユーザー名はリストになかった=はじめてのひと
+                               $stmt = $db->prepare(QUERY_ADD_USER);
+                               //$stgName = DEFAULT_START_STAGE;
+                               $stmt->bind_param(QUERY_ADD_USER_TYPES, $name, $stgName);
+                               $stmt->execute();
+                               if($stmt->errno == 0){
+                                       //クエリ成功
+                                       $stmt = $db->prepare(QUERY_SELECT_USER_ID);
+                                       $stmt->bind_param(QUERY_SELECT_USER_ID_TYPES, $name);
+                                       $stmt->execute();
+                                       if($stmt->errno == 0){
+                                               //クエリ成功
+                                               $stmt->store_result();
+                                               if($stmt->num_rows == 0){
+                                                       //ユーザー名はリストになかった=そんな…登録したのに。あきらめてエラーを返す
+                                                       responseError();
+                                               } else{
+                                                       //ユーザー名がリストにある=予想通り
+                                                       $stmt->bind_result($id);
+                                                       $stmt->fetch();
+                                                       //responseNewUser($db, $id);
+                                                       responseExistUser($db, $id, getUserStage($db, $id));
+                                               }
+                                       } else{
+                                               //クエリ失敗
+                                               responseError();
+                                       }
+                               } else{
+                                       //クエリ失敗
+                                       responseError();
+                               }
+                       } else{
+                               //すでにユーザー名がリストにある=続きからプレイ
+                               $stmt->bind_result($id);
+                               $stmt->fetch();
                                //未実装(本当はデータベースから続きのステージ名を取得するべき)
-                               responseExistUser($db, $id, "main");
+                               updateUserStage($db, $id, $stgName);
+                               responseExistUser($db, $id, $stgName);
                        }
                } else{
                        //クエリ失敗
@@ -132,6 +189,26 @@ function updateUserStage($db, $userID, $stageName)
        //エラーチェック省略
 }
 
+function getUserStage($db, $userID)
+{
+       $stgName = "unknown";
+       $stmt = $db->prepare(QUERY_SELECT_USER_STAGE);
+       $stmt->bind_param(QUERY_SELECT_USER_STAGE_TYPES, $userID);
+       $stmt->execute();
+       if($stmt->errno == 0){
+               //クエリ成功
+               $stmt->store_result();
+               // 結果の個数を確認
+               if($stmt->num_rows != 0){
+                       //結果格納
+                       $stmt->bind_result($stgName);
+                       $stmt->fetch();
+               }
+       }
+       $stmt->close();
+       return $stgName;
+}
+
 function deleteUserStageObjectAll($db, $userID)
 {
        $stmt = $db->prepare(QUERY_DELETE_USER_OBJECT_ALL);