정적 분석기 결과 반영. 빠진 POST 인자 입력 등

This commit is contained in:
2018-04-08 20:51:40 +09:00
parent b78fe22633
commit 5b926ae5c5
11 changed files with 66 additions and 27 deletions
+1
View File
@@ -7,6 +7,7 @@ include "func.php";
$title = Util::getReq('title'); $title = Util::getReq('title');
$msg = Util::getReq('msg'); $msg = Util::getReq('msg');
$num = Util::getReq('num'); $num = Util::getReq('num');
$reply = Util::getReq('reply');
// $title, $msg, $num // $title, $msg, $num
//로그인 검사 //로그인 검사
+1 -1
View File
@@ -40,7 +40,7 @@ if($command == 46) {
], 'owner=%i', $userID); ], 'owner=%i', $userID);
$count = count($turn); $count = count($turn);
$query = ['con'=>$db->eval('con')]; $query = ['con'=>$db->sqleval('con')];
foreach($turn as $turnIdx){ foreach($turn as $turnIdx){
$query['turn'.$turnIdx] = $comStr; $query['turn'.$turnIdx] = $comStr;
} }
+7
View File
@@ -10,9 +10,16 @@ $userID = Session::getUserID();
$db = DB::db(); $db = DB::db();
$connect=$db->get(); $connect=$db->get();
$turn = Util::getReq('turn', 'array_int');
$commandtype = Util::getReq('commandtype', 'int');
increaseRefresh("턴입력", 1); increaseRefresh("턴입력", 1);
if(!$turn || $commandtype === null){
header('location:index.php');
die();
}
$query = "select conlimit from game limit 1"; $query = "select conlimit from game limit 1";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$admin = MYDB_fetch_array($result); $admin = MYDB_fetch_array($result);
+5 -5
View File
@@ -428,8 +428,8 @@ function processWar($general, $city) {
$deadAmount['def'] = $deadAmount['def'] + $mykillnum; $deadAmount['def'] = $deadAmount['def'] + $mykillnum;
// 도시쌀 소모 계산 // 도시쌀 소모 계산
$opexp = round($opexp / 50 * 0.8); $opexp = intval(round($opexp / 50 * 0.8));
$rice = round($opexp * 5 * getCrewtypeRice($game, 0, 0) * ($game['city_rate']/100 - 0.2)); $rice = intval(round($opexp * 5 * getCrewtypeRice($game, 0, 0) * ($game['city_rate']/100 - 0.2)));
$destnation['rice'] -= $rice; $destnation['rice'] -= $rice;
if($destnation['rice'] < 0) { $destnation['rice'] = 0; } if($destnation['rice'] < 0) { $destnation['rice'] = 0; }
$query = "update nation set rice='{$destnation['rice']}' where nation='{$destnation['nation']}'"; $query = "update nation set rice='{$destnation['rice']}' where nation='{$destnation['nation']}'";
@@ -438,8 +438,8 @@ function processWar($general, $city) {
pushAdminLog(["성벽 쌀 소모 : $rice"]); pushAdminLog(["성벽 쌀 소모 : $rice"]);
//원래대로 스케일링 //원래대로 스케일링
$city['def'] = round($city['def'] / 10); $city['def'] = intval(round($city['def'] / 10));
$city['wall'] = round($city['wall'] / 10); $city['wall'] = intval(round($city['wall'] / 10));
//내정 감소 //내정 감소
$dec = round($cityCrew / 10); $dec = round($cityCrew / 10);
$city['agri'] -= $dec; $city['agri'] -= $dec;
@@ -455,7 +455,7 @@ function processWar($general, $city) {
addGenDex($general['no'], $general['crewtype'], $mykillnum); addGenDex($general['no'], $general['crewtype'], $mykillnum);
addGenDex($general['no'], 40, $mydeathnum); addGenDex($general['no'], 40, $mydeathnum);
// 죽은수 기술로 누적 // 죽은수 기술로 누적
$num = round($mydeathnum * 0.01); $num = intval(round($mydeathnum * 0.01));
// 국가보정 // 국가보정
if($nation['type'] == 3 || $nation['type'] == 13) { $num *= 1.1; } if($nation['type'] == 3 || $nation['type'] == 13) { $num *= 1.1; }
if($nation['type'] == 5 || $nation['type'] == 6 || $nation['type'] == 7 || $nation['type'] == 8 || $nation['type'] == 12) { $num *= 0.9; } if($nation['type'] == 5 || $nation['type'] == 6 || $nation['type'] == 7 || $nation['type'] == 8 || $nation['type'] == 12) { $num *= 0.9; }
+15 -9
View File
@@ -41,11 +41,19 @@ if(!$npc){
########## 동일 정보 존재여부 확인. ########## ########## 동일 정보 존재여부 확인. ##########
$admin = $db->queryFirstRow('SELECT year,month,maxgeneral,turnterm,genius,npcmode from game limit 1'); list(
$year,
$month,
$maxgeneral,
$turnterm,
$genius,
$npcmode
) = $db->queryFirstList('SELECT year,month,maxgeneral,turnterm,genius,npcmode from game limit 1');
$gencount = $db->queryFirstField('SELECT count(`no`) FROM general WHERE noc<2'); $gencount = $db->queryFirstField('SELECT count(`no`) FROM general WHERE noc<2');
$oldGeneral = $db->queryFirstField('SELECT `no` FROM general WHERE `owner`=%i', $userID); $oldGeneral = $db->queryFirstField('SELECT `no` FROM general WHERE `owner`=%i', $userID);
if($admin['npcmode'] != 1) { if($npcmode != 1) {
echo "<script>alert('잘못된 접근입니다!');</script>"; echo "<script>alert('잘못된 접근입니다!');</script>";
echo "<script>history.go(-1);</script>"; echo "<script>history.go(-1);</script>";
exit(); exit();
@@ -57,7 +65,7 @@ if($oldGeneral) {
</script>"); </script>");
exit; exit;
} }
if($admin['maxgeneral'] <= $gencount) { if($maxgeneral <= $gencount) {
echo("<script> echo("<script>
window.alert('더이상 등록할 수 없습니다!') window.alert('더이상 등록할 수 없습니다!')
history.go(-1) history.go(-1)
@@ -110,13 +118,11 @@ $me = [
'no'=>$npcID 'no'=>$npcID
]; ];
$log[0] = "<C>●</>{$admin['month']}월:<Y>{$npc['name']}</>의 육체에 <Y>{$session->userName}</>(이)가 <S>빙의</>됩니다!"; pushGeneralHistory($me, "<C>●</>{$year}{$month}월:<Y>{$npc['name']}</>의 육체에 <Y>{$session->userName}</>(이)가 빙의되다.");
pushGeneralHistory($me, "<C>●</>{$admin['year']}{$admin['month']}월:<Y>{$npc['name']}</>의 육체에 <Y>{$session->userName}</>(이)가 빙의되다."); //pushGenLog($me, $mylog);
pushGenLog($me, $mylog); pushGeneralPublicRecord(["<C>●</>{$month}월:<Y>{$npc['name']}</>의 육체에 <Y>{$session->userName}</>(이)가 <S>빙의</>됩니다!"], $year, $month);
pushGeneralPublicRecord($log, $admin['year'], $admin['month']);
$adminLog[0] = "가입 : {$session->userName} // {$id} // ".getenv("REMOTE_ADDR"); pushAdminLog(["가입 : {$session->userName} // {$id} // ".getenv("REMOTE_ADDR")]);
pushAdminLog($adminLog);
$rootDB->insert('member_log', [ $rootDB->insert('member_log', [
'member_no' => $userID, 'member_no' => $userID,
+2 -1
View File
@@ -45,7 +45,8 @@ if(!$v->validate()){
$server = basename($request['server']); $server = basename($request['server']);
$target = $request['target']; $target = $request['target'];
$baseServerName = end(array_keys(AppConf::getList()));
$baseServerName = Util::array_last_key(AppConf::getList());
$targetDir =$target.':'.$baseServerName; $targetDir =$target.':'.$baseServerName;
+2
View File
@@ -47,6 +47,8 @@ if(!$username || !$password || !$nickname){
]); ]);
} }
'@phan-var-force string $password';
if(strlen($password)!=128){ if(strlen($password)!=128){
Json::die([ Json::die([
'result'=>false, 'result'=>false,
+3 -3
View File
@@ -37,7 +37,7 @@ class StringUtil
} }
if($currentPos + $width >= $length){ if($currentPos + $width >= $length){
return substr($str, $currentPos, null); return substr($str, $currentPos);
} }
for($idx = $currentPos; $idx < count($strings); $idx++){ for($idx = $currentPos; $idx < count($strings); $idx++){
@@ -74,7 +74,7 @@ class StringUtil
return $result.$endFill; return $result.$endFill;
} }
function splitString($str, $l = 0) { public static function splitString($str, $l = 0) {
//https://php.net/manual/kr/function.str-split.php#107658 //https://php.net/manual/kr/function.str-split.php#107658
if ($l > 0) { if ($l > 0) {
$ret = array(); $ret = array();
@@ -99,7 +99,7 @@ class StringUtil
$chLen = mb_strwidth($ch, 'UTF-8'); $chLen = mb_strwidth($ch, 'UTF-8');
if($chLen == 0){ if($chLen == 0){
return padString($str, $maxsize, ' ', $position); return static::padString($str, $maxsize, ' ', $position);
} }
$textLen = mb_strwidth($str, 'UTF-8'); $textLen = mb_strwidth($str, 'UTF-8');
+25 -8
View File
@@ -3,6 +3,15 @@ namespace sammo;
class Util extends \utilphp\util class Util extends \utilphp\util
{ {
/**
* int 값 반환을 강제하는 부동소수점 반올림
* @param numeric $value
*/
public static function round($value) : int{
return intval(round($value));
}
private static function _parseReq($value, string $type) private static function _parseReq($value, string $type)
{ {
if (is_array($value)) { if (is_array($value)) {
@@ -233,7 +242,11 @@ class Util extends \utilphp\util
} }
} }
public static function eraseNullValue($dict, $depth=512) /**
* @param null|mixed|mixed[] $dict
* @return null|mixed|mixed[]
*/
public static function eraseNullValue($dict, int $depth=512)
{ {
//TODO:Test 추가 //TODO:Test 추가
if ($dict === null) { if ($dict === null) {
@@ -251,13 +264,17 @@ class Util extends \utilphp\util
foreach ($dict as $key=>$value) { foreach ($dict as $key=>$value) {
if ($value === null) { if ($value === null) {
unset($dict[$key]); unset($dict[$key]);
} elseif (Util::isDict($value)) { continue;
$newValue = Util::eraseNullValue($value, $depth - 1); }
if ($newValue === null) { if (!Util::isDict($value)) {
unset($dict[$key]); continue;
} else { }
$dict[$key] = $newValue;
} $newValue = Util::eraseNullValue($value, $depth - 1);
if ($newValue === null) {
unset($dict[$key]);
} else {
$dict[$key] = $newValue;
} }
} }
+3
View File
@@ -27,6 +27,9 @@ class WebUtil
} }
} }
/**
* @return null|mixed|mixed[]
*/
public static function parseJsonPost() public static function parseJsonPost()
{ {
// http://thisinterestsme.com/receiving-json-post-data-via-php/ // http://thisinterestsme.com/receiving-json-post-data-via-php/
+2
View File
@@ -1,4 +1,6 @@
<?php <?php
namespace sammo;
require('../hwe/lib.php'); require('../hwe/lib.php');