Example #1
0
 function changeMain($hako, $data)
 {
     global $init;
     $log = new Log();
     $id = $data['ISLANDID'];
     $num = $hako->idToNumber[$id];
     $island = $hako->islands[$num];
     $name = $island['name'];
     $flag = 0;
     // パスワードチェック
     if (Util::checkSpecialPassword($data['OLDPASS'])) {
         // 特殊パスワード
         if (preg_match("/^無人\$/", $data['ISLANDNAME'])) {
             // 島の強制削除
             $this->deleteIsland($hako, $data);
             Success::deleteIsland($name);
             return;
         } else {
             $island['money'] = $init->maxMoney;
             $island['food'] = $init->maxFood;
         }
     } elseif (!Util::checkPassword($island['password'], $data['OLDPASS'])) {
         // password間違い
         HakoError::wrongPassword();
         return;
     }
     // 確認用パスワード
     if (strcmp($data['PASSWORD'], $data['PASSWORD2']) != 0) {
         // password間違い
         HakoError::wrongPassword();
         return;
     }
     if (!empty($data['ISLANDNAME']) && strlen($data['ISLANDNAME']) != 0) {
         // 名前変更の場合
         // 名前が正当かチェック
         if (preg_match("/[,?()<>\$]/", $data['ISLANDNAME']) || strcmp($data['ISLANDNAME'], "無人") == 0) {
             HakoError::newIslandBadName();
             return;
         }
         // 名前の重複チェック
         if (Util::nameToNumber($hako, $data['ISLANDNAME']) != -1) {
             HakoError::newIslandAlready();
             return;
         }
         if ($island['money'] < $init->costChangeName) {
             // 金が足りない
             HakoError::changeNoMoney();
             return;
         }
         // 代金
         if (!Util::checkSpecialPassword($data['OLDPASS'])) {
             $island['money'] -= $init->costChangeName;
         }
         // 名前を変更
         $log->changeName($island['name'], $data['ISLANDNAME']);
         $island['name'] = $data['ISLANDNAME'];
         $flag = 1;
     }
     // password変更の場合
     if (!empty($data['PASSWORD'])) {
         // パスワードを変更
         $island['password'] = Util::encode($data['PASSWORD']);
         $flag = 1;
     }
     //if(($flag == 0) && (strcmp($data['PASSWORD'], $data['PASSWORD2']) != 0)) {
     if ($flag == 0) {
         // どちらも変更されていない
         HakoError::changeNothing();
         return;
     }
     $hako->islands[$num] = $island;
     // データ書き出し
     $hako->writeIslandsFile($id);
     // 変更成功
     Success::change();
 }