내부 전역 변수값 처리를 위해 함수 정리

conf.php에 getServPrefix 추가. 이후 같은 db에서 다른 서버를 운용할때 사용 가능할 것으로 예상.

$_SESSION 값을 직접 받아서 처리하지 않도록 하기위한 용도로 getUserID(), getGeneralID(), getGeneralName() 을 설정

$_SESSION['p_id']를 p_no로 착각하여 구현한 부분 수정

int|null 변환을 위한 toInt 함수 추가

func_string.php에서 null이 입력될 경우 일부 처리

각 서버에 계정이 생성되었는지 확인하는 isSigned()함수 추가
This commit is contained in:
2018-02-03 03:36:34 +09:00
parent 0bd51726c3
commit e536e2d4ca
15 changed files with 215 additions and 154 deletions
+92 -20
View File
@@ -16,24 +16,89 @@ require_once('func_template.php');
require_once('func_message.php');
require_once('func_map.php');
/// 0.0~1.0 사이의 랜덤 float
/**
* 0.0~1.0 사이의 랜덤 float
* @return float
*/
function randF(){
return mt_rand() / mt_getrandmax();
}
/// $_SESSION['p_id'] 의 값을 받아옴
function getGeneralID(){
//TODO: 서버마다 p_id가 다를 수 있도록 조치
if(!isset($_SESSION['p_id'])){
return NULL;
/**
* 로그인한 유저의 전역 id를 받아옴
*
* @return string|null
*/
function getUserID($forceExit=false){
$userID = util::array_get($_SESSION['p_id'], null);
if(!$userID && $forceExit){
header('Location:..');
die();
}
if($_SESSION['p_id']===''){
return NULL;
}
return $_SESSION['p_id'];
return $userID;
}
/**
* 로그인한 유저의 장수 id를 받아옴
*
* @return int|null
*/
function getGeneralID($forceExit=false){
$username = getUserID();
if(!$username){ //유저명 없으면 어차피 의미 없음.
return null;
}
$id_key = getServPrefix().'p_no';
$generalID = util::array_get($_SESSION[$id_key], null);
if($generalID){
return $generalID;
}
//흠?
$generalID = getDB()->queryFirstField('select no from general where user_id = %s', $username);
if(!$generalID && $forceExit){
header('Location:..');
die();
}
if($generalIDid){
$_SESSION[$id_key] = $generalID;
}
return $generalID;
}
/**
* 로그인한 유저의 장수명을 받아옴
*
* @return string|null
*/
function getGeneralName($forceExit=false)
{
$generalID = getGeneralID();
if(!$generalID){
if($forceExit){
header('Location:..');
die();
}
return null;
}
$id_key = getServPrefix().'p_name';
$generalName = util::array_get($_SESSION[$id_key], null);
if($generalName){
return $generalName;
}
//흠?
$generalName = getDB()->queryFirstField('select name from general where no = %i', $generalID);
}
function GetImageURL($imgsvr) {
global $image, $image1;
@@ -44,9 +109,14 @@ function GetImageURL($imgsvr) {
}
}
function CheckLoginEx(){
//TODO: 서버 별로 p_id를 다르게 설정할 수 있어야함.
if(!isset($_SESSION['p_id'])) {
/**
* generalID를 이용해 각 서버 등록 여부를 확인함
*
* @return bool
*/
function isSigned(){
$p_id = getGeneralID();
if(!$_pid){
return false;
}
return true;
@@ -70,7 +140,7 @@ function checkLimit($userlevel, $con, $conlimit) {
}
function getBlockLevel() {
return getDB()->queryFirstField('select block from general where user_id= %i', getGeneralID());
return getDB()->queryFirstField('select block from general where no = %i', getGeneralID());
}
function getRandGenName() {
@@ -1801,7 +1871,9 @@ function getOnlineNum() {
function onlinegen($connect) {
$onlinegen = "";
if($_SESSION['p_nation'] == 0) {
$generalID = getGeneralID();
$nationID = getDB()->queryFirstField('select `nation` from `general` where `no` = %i', $generalID);
if($nationID !== null || toInt($nationID) === 0) {
$query = "select onlinegen from game where no='1'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$game = MYDB_fetch_array($result);
@@ -2140,14 +2212,14 @@ function increateRefreshEx($type, $cnt=1){
));
$date = date('Y-m-d H:i:s');
$p_id = getGeneralID();
$generalID = getGeneralID();
if($p_id !== NULL){
$db->query("update `general` set `lastrefresh`= %s_date, `con` = `con`+%d_cnt, `connect`= `connect`+ %d_cnt, '\
'`refcnt` = `refcnt` + %d_cnt, `refresh` = `refresh` + %d_cnt where `user_id` =%s_p_id",array(
'`refcnt` = `refcnt` + %d_cnt, `refresh` = `refresh` + %d_cnt where `no` =%i_generalID",array(
'date'=>$date,
'cnt'=>$cnt,
'p_id'=>$p_id
'p_id'=>$generalID
));
}
@@ -2155,7 +2227,7 @@ function increateRefreshEx($type, $cnt=1){
$date2 = substr($date, 0, 10);
$online = getOnlineNum();
$fp = fopen("logs/_{$date2}_refresh.txt", "a");
$msg = _String::Fill2($date,20," ")._String::Fill2($_SESSION['p_id'],13," ")._String::Fill2($_SESSION['p_name'],13," ")._String::Fill2($_SESSION['p_ip'],16," ")._String::Fill2($type, 10, " ")." 동접자: {$online}";
$msg = _String::Fill2($date,20," ")._String::Fill2(getUserID(),13," ")._String::Fill2(getGeneralName(),13," ")._String::Fill2($_SESSION['p_ip'],16," ")._String::Fill2($type, 10, " ")." 동접자: {$online}";
fwrite($fp, $msg."\n");
fclose($fp);
@@ -2184,7 +2256,7 @@ function increateRefreshEx($type, $cnt=1){
if($str != "") {
file_put_contents("logs/_{$date2}_ipcheck.txt",
sprintf("ID:%s//name:%s//REMOTE_ADDR:%s%s\n",
$_SESSION['p_id'],$_SESSION['p_name'],$_SERVER['REMOTE_ADDR'],$str), FILE_APPEND);
getUserID(), getGeneralName(),$_SERVER['REMOTE_ADDR'],$str), FILE_APPEND);
}