Files
core/twe/login_process.php
T
Hide_D e536e2d4ca 내부 전역 변수값 처리를 위해 함수 정리
conf.php에 getServPrefix 추가. 이후 같은 db에서 다른 서버를 운용할때 사용 가능할 것으로 예상.

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

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

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

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

각 서버에 계정이 생성되었는지 확인하는 isSigned()함수 추가
2018-02-03 03:36:34 +09:00

94 lines
3.1 KiB
PHP

<?php
include "lib.php";
include "func.php";
//FIXME: 이 프로세스 전체가 필요없을 수 있다. session 디렉토리를 관리하지 않거나, 자동 로그인을 처리하는 방법을 생각할 것.
use utilphp\util as util;
$id = util::array_get($_POST['id'],'');
$pw = util::array_get($_POST['pw'], '');
$conmsg = util::array_get($_POST['conmsg'], '');
$pw = substr($pw, 0, 32);
//회원 테이블에서 정보확인
$member = getRootDB()->queryFirstRow('select no,name from MEMBER where id=%s and pw=%s', $id, $pw);
if(!$member) {
MessageBox("아이디나 암호가 올바르지 않습니다!!!");
//TODO:login_process를 rest 형태로 처리
//header ("Location: index.php");
exit(0);
}
//NOTE: 왜 Session을 지우는가?
DeleteSession();
$db = getDB();
//회원 테이블에서 정보확인
$me= $db->queryFirstRow('select no,name,nation,block,killturn from general where user_id= %s', $id);
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$me = MYDB_fetch_array($result);
if(!$me) {
MessageBox("캐릭터가 없습니다!!!");
//TODO:login_process를 rest 형태로 처리
//header ("Location: index.php");
exit(0);
}
switch($me['block']) {
case 1:
MessageBox("비매너 발언으로 인해, 발언권이 제한됩니다."); break;
case 2:
MessageBox("현재 블럭된 계정입니다. 턴 실행이 제한됩니다.");
MessageBox("절대 1계정만 사용하십시오! {$me['killturn']}시간 후 재등록 가능합니다."); break;
case 3:
MessageBox("현재 블럭된 계정입니다. 발언권과 턴 실행이 제한됩니다.");
MessageBox("절대 1계정만 사용하십시오! {$me['killturn']}시간 후 재등록 가능합니다."); break;
}
$_SESSION[getServPrefix().'p_no'] = toInt($me['no']);
$_SESSION['p_id'] = $id;
$_SESSION[getServPrefix().'p_name'] = $me['name'];
$_SESSION['p_time'] = time();
$date = date('Y-m-d H:i:s');
$query="update general set logcnt=logcnt+1,ip='{$_SESSION['p_ip']}',lastconnect='$date',conmsg='$conmsg' where user_id='{$_SESSION['p_id']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$date = date('Y_m_d H:i:s');
$date2 = substr($date, 0, 10);
$fp = fopen("logs/_{$date2}_login.txt", "a");
$msg = _String::Fill2($date,20," ").tab2($id,13," ")._String::Fill2($me['name'],13," ")._String::Fill2($_SESSION['p_ip'],16," ");
fwrite($fp, $msg."\n");
fclose($fp);
header ("Location: index.php");
function DeleteSession() {
$session_path = "data/session"; // 세션이저장된 디렉토리
if(!$dir=@opendir($session_path)) echo "디렉토리를 열지못했습니다.";
while($file=@readdir($dir)) {
if(!strstr($file,'sess_')) continue;
if(strpos($file,'sess_')!=0) continue;
if (!$atime=@fileatime("$session_path/$file")) continue;
if (time() > $atime + 86400) { // 10대시 지난시간을 초로 계산해서 적어주시면 됩니다.
// $return = (@unlink("$session_path/$file"));
@unlink("$session_path/$file");
}
}
closedir($dir);
}
MYDB_close($connect);