Merge branch 'inicert' of github.com:gnuboard/gnuboard5 into inicert
This commit is contained in:
@ -1,2 +1,3 @@
|
||||
<?php
|
||||
define('G5_CERT_IN_PROG', true);
|
||||
include_once('../../common.php');
|
||||
219
plugin/kcpcert/find_kcpcert_result.php
Normal file
219
plugin/kcpcert/find_kcpcert_result.php
Normal file
@ -0,0 +1,219 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
include_once(G5_KCPCERT_PATH.'/kcpcert_config.php');
|
||||
|
||||
$site_cd = "";
|
||||
$ordr_idxx = "";
|
||||
|
||||
$cert_no = "";
|
||||
$cert_enc_use = "";
|
||||
$enc_info = "";
|
||||
$enc_data = "";
|
||||
$req_tx = "";
|
||||
|
||||
$enc_cert_data = "";
|
||||
$cert_info = "";
|
||||
|
||||
$tran_cd = "";
|
||||
$res_cd = "";
|
||||
$res_msg = "";
|
||||
|
||||
$dn_hash = "";
|
||||
|
||||
/*------------------------------------------------------------------------*/
|
||||
/* :: 전체 파라미터 남기기 */
|
||||
/*------------------------------------------------------------------------*/
|
||||
|
||||
// request 로 넘어온 값 처리
|
||||
$key = array_keys($_POST);
|
||||
$sbParam ="";
|
||||
|
||||
for($i=0; $i<count($key); $i++)
|
||||
{
|
||||
$nmParam = $key[$i];
|
||||
$valParam = $_POST[$nmParam];
|
||||
|
||||
if ( $nmParam == "site_cd" )
|
||||
{
|
||||
$site_cd = f_get_parm_str ( $valParam );
|
||||
}
|
||||
|
||||
if ( $nmParam == "ordr_idxx" )
|
||||
{
|
||||
$ordr_idxx = f_get_parm_str ( $valParam );
|
||||
}
|
||||
|
||||
if ( $nmParam == "res_cd" )
|
||||
{
|
||||
$res_cd = f_get_parm_str ( $valParam );
|
||||
}
|
||||
|
||||
if ( $nmParam == "cert_enc_use" )
|
||||
{
|
||||
$cert_enc_use = f_get_parm_str ( $valParam );
|
||||
}
|
||||
|
||||
if ( $nmParam == "req_tx" )
|
||||
{
|
||||
$req_tx = f_get_parm_str ( $valParam );
|
||||
}
|
||||
|
||||
if ( $nmParam == "cert_no" )
|
||||
{
|
||||
$cert_no = f_get_parm_str ( $valParam );
|
||||
}
|
||||
|
||||
if ( $nmParam == "enc_cert_data" )
|
||||
{
|
||||
$enc_cert_data = f_get_parm_str ( $valParam );
|
||||
}
|
||||
|
||||
if ( $nmParam == "dn_hash" )
|
||||
{
|
||||
$dn_hash = f_get_parm_str ( $valParam );
|
||||
}
|
||||
|
||||
// 부모창으로 넘기는 form 데이터 생성 필드
|
||||
$sbParam .= "<input type='hidden' name='" . $nmParam . "' value='" . f_get_parm_str( $valParam ) . "'/>";
|
||||
}
|
||||
|
||||
$ct_cert = new C_CT_CLI;
|
||||
$ct_cert->mf_clear();
|
||||
|
||||
|
||||
$g5['title'] = '휴대폰인증 결과';
|
||||
include_once(G5_PATH.'/head.sub.php');
|
||||
|
||||
// 결과 처리
|
||||
|
||||
if( $cert_enc_use == "Y" )
|
||||
{
|
||||
// 인증내역기록
|
||||
@insert_cert_history($member['mb_id'], 'kcp', 'hp');
|
||||
|
||||
if( $res_cd == "0000" )
|
||||
{
|
||||
// dn_hash 검증
|
||||
// KCP 가 리턴해 드리는 dn_hash 와 사이트 코드, 주문번호 , 인증번호를 검증하여
|
||||
// 해당 데이터의 위변조를 방지합니다
|
||||
$veri_str = $site_cd.$ordr_idxx.$cert_no; // 사이트 코드 + 주문번호 + 인증거래번호
|
||||
|
||||
if ( $ct_cert->check_valid_hash ( $home_dir , $dn_hash , $veri_str ) != "1" )
|
||||
{
|
||||
if(strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN') {
|
||||
// 검증 실패시 처리 영역
|
||||
if(PHP_INT_MAX == 2147483647) // 32-bit
|
||||
$bin_exe = '/bin/ct_cli';
|
||||
else
|
||||
$bin_exe = '/bin/ct_cli_x64';
|
||||
} else {
|
||||
$bin_exe = '/bin/ct_cli_exe.exe';
|
||||
}
|
||||
|
||||
echo "dn_hash 변조 위험있음 (".G5_KCPCERT_PATH.$bin_exe." 파일에 실행권한이 있는지 확인하세요.)";
|
||||
exit;
|
||||
// 오류 처리 ( dn_hash 변조 위험있음)
|
||||
}
|
||||
|
||||
// 가맹점 DB 처리 페이지 영역
|
||||
|
||||
// 인증데이터 복호화 함수
|
||||
// 해당 함수는 암호화된 enc_cert_data 를
|
||||
// site_cd 와 cert_no 를 가지고 복화화 하는 함수 입니다.
|
||||
// 정상적으로 복호화 된경우에만 인증데이터를 가져올수 있습니다.
|
||||
$opt = "1" ; // 복호화 인코딩 옵션 ( UTF - 8 사용시 "1" )
|
||||
$ct_cert->decrypt_enc_cert( $home_dir , $site_cd , $cert_no , $enc_cert_data , $opt );
|
||||
|
||||
$comm_id = $ct_cert->mf_get_key_value("comm_id" ); // 이동통신사 코드
|
||||
$phone_no = $ct_cert->mf_get_key_value("phone_no" ); // 전화번호
|
||||
$user_name = $ct_cert->mf_get_key_value("user_name" ); // 이름
|
||||
$birth_day = $ct_cert->mf_get_key_value("birth_day" ); // 생년월일
|
||||
$sex_code = $ct_cert->mf_get_key_value("sex_code" ); // 성별코드
|
||||
$local_code = $ct_cert->mf_get_key_value("local_code" ); // 내/외국인 정보
|
||||
$ci = $ct_cert->mf_get_key_value("ci" ); // CI
|
||||
$di = $ct_cert->mf_get_key_value("di" ); // DI 중복가입 확인값
|
||||
$ci_url = urldecode( $ct_cert->mf_get_key_value("ci" ) ); // CI
|
||||
$di_url = urldecode( $ct_cert->mf_get_key_value("di" ) ); // DI 중복가입 확인값
|
||||
$dec_res_cd = $ct_cert->mf_get_key_value("res_cd" ); // 암호화된 결과코드
|
||||
$dec_mes_msg = $ct_cert->mf_get_key_value("res_msg" ); // 암호화된 결과메시지
|
||||
|
||||
if(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' && function_exists('mb_detect_encoding') ){
|
||||
if( mb_detect_encoding($user_name, 'EUC-KR') === 'EUC-KR' ){
|
||||
$user_name = iconv_utf8($user_name);
|
||||
$dec_mes_msg = iconv_utf8($dec_mes_msg);
|
||||
}
|
||||
}
|
||||
|
||||
// 정상인증인지 체크
|
||||
if(!$phone_no)
|
||||
alert_close("정상적인 인증이 아닙니다. 올바른 방법으로 이용해 주세요.");
|
||||
|
||||
$phone_no = hyphen_hp_number($phone_no);
|
||||
$mb_dupinfo = $di;
|
||||
$md5_ci = md5($ci.$ci);
|
||||
|
||||
$row = sql_fetch("select mb_id from {$g5['member_table']} where mb_id <> '{$member['mb_id']}' and mb_dupinfo = '{$md5_ci}'"); // ci데이터로 찾음
|
||||
if (empty($row['mb_id'])) { // ci로 등록된 계정이 없다면
|
||||
$row = sql_fetch("select mb_id from {$g5['member_table']} where mb_id <> '{$member['mb_id']}' and mb_dupinfo = '{$mb_dupinfo}'"); // di데이터로 찾음
|
||||
if (empty($row['mb_id'])) { // di로 등록된 계정도 없다면
|
||||
alert_close("인증하신 정보로 가입된 회원정보가 없습니다.");
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if( $res_cd != "0000" )
|
||||
{
|
||||
// 인증실패
|
||||
alert_close('코드 : '.$_POST['res_cd'].' '.urldecode($_POST['res_msg']));
|
||||
exit;
|
||||
}
|
||||
}
|
||||
else if( $cert_enc_use != "Y" )
|
||||
{
|
||||
// 암호화 인증 안함
|
||||
if( G5_IS_MOBILE ){
|
||||
echo '<script>'.PHP_EOL;
|
||||
echo 'window.parent.$("#cert_info").css("display", "");'.PHP_EOL;
|
||||
echo 'window.parent.$("#kcp_cert" ).css("display", "none");'.PHP_EOL;
|
||||
echo '</script>'.PHP_EOL;
|
||||
} else {
|
||||
alert_close("휴대폰 본인확인을 취소 하셨습니다.");
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
$ct_cert->mf_clear();
|
||||
?>
|
||||
<form name="mbFindForm" method="POST">
|
||||
<input type="hidden" name="mb_id" value="<?php echo $row["mb_id"]; ?>">
|
||||
<?php echo $sbParam; ?>
|
||||
</form>
|
||||
<script>
|
||||
jQuery(function($) {
|
||||
|
||||
var $opener = window.opener;
|
||||
var is_mobile = false;
|
||||
$opener.name="parentPage";
|
||||
|
||||
if (typeof g5_is_mobile != "undefined" && g5_is_mobile ) {
|
||||
$opener = window.parent;
|
||||
is_mobile = true;
|
||||
} else {
|
||||
$opener = window.opener;
|
||||
}
|
||||
|
||||
// up_hash 검증
|
||||
if( document.mbFindForm.up_hash.value != $opener.$("input[name=veri_up_hash]").val() ) {
|
||||
alert("up_hash 변조 위험있음");
|
||||
}
|
||||
|
||||
document.mbFindForm.target = "parentPage";
|
||||
document.mbFindForm.action = "<?php echo G5_BBS_URL.'/password_reset.php'?>";
|
||||
document.mbFindForm.submit();
|
||||
|
||||
alert("본인인증이 완료되었습니다.");
|
||||
window.close();
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
include_once(G5_PATH.'/tail.sub.php');
|
||||
@ -6,6 +6,17 @@ certify_count_check($member['mb_id'], 'hp');
|
||||
|
||||
setlocale(LC_CTYPE, 'ko_KR.euc-kr');
|
||||
|
||||
switch($_GET['pageType']){ // 페이지 타입 체크
|
||||
case "register":
|
||||
$resultPage = "/kcpcert_result.php";
|
||||
break;
|
||||
case "find":
|
||||
$resultPage = "/find_kcpcert_result.php";
|
||||
break;
|
||||
default:
|
||||
alert_close('잘못된 접근입니다.');
|
||||
}
|
||||
|
||||
// kcp 휴대폰인증파일
|
||||
include_once(G5_KCPCERT_PATH.'/kcpcert_config.php');
|
||||
|
||||
@ -69,7 +80,7 @@ $ct_cert->mf_clear();
|
||||
<!-- 사이트코드 -->
|
||||
<input type="hidden" name="site_cd" value="<?php echo $site_cd; ?>" />
|
||||
<!-- Ret_URL : 인증결과 리턴 페이지 ( 가맹점 URL 로 설정해 주셔야 합니다. ) -->
|
||||
<input type="hidden" name="Ret_URL" value="<?php echo G5_KCPCERT_URL; ?>/kcpcert_result.php" />
|
||||
<input type="hidden" name="Ret_URL" value="<?php echo G5_KCPCERT_URL.$resultPage; ?>" />
|
||||
<!-- cert_otp_use 필수 ( 메뉴얼 참고)
|
||||
Y : 실명 확인 + OTP 점유 확인 , N : 실명 확인 only
|
||||
-->
|
||||
@ -108,7 +119,7 @@ function cert_page()
|
||||
|
||||
if ( ( frm.req_tx.value == "auth" || frm.req_tx.value == "otp_auth" ) )
|
||||
{
|
||||
frm.action="./kcpcert_result.php";
|
||||
frm.action=".<?php echo $resultPage; ?>";
|
||||
|
||||
// MOBILE
|
||||
if( ( navigator.userAgent.indexOf("Android") > - 1 || navigator.userAgent.indexOf("iPhone") > - 1 ) )
|
||||
|
||||
@ -149,11 +149,11 @@ if( $cert_enc_use == "Y" )
|
||||
alert_close("정상적인 인증이 아닙니다. 올바른 방법으로 이용해 주세요.");
|
||||
|
||||
$phone_no = hyphen_hp_number($phone_no);
|
||||
$mb_dupinfo = $di;
|
||||
$mb_dupinfo = md5($ci.$ci);
|
||||
|
||||
$sql = " select mb_id from {$g5['member_table']} where mb_id <> '{$member['mb_id']}' and mb_dupinfo = '{$mb_dupinfo}' ";
|
||||
$row = sql_fetch($sql);
|
||||
if ($row['mb_id']) {
|
||||
if (!empty($row['mb_id'])) {
|
||||
alert_close("입력하신 본인확인 정보로 가입된 내역이 존재합니다.\\n회원아이디 : ".$row['mb_id']);
|
||||
}
|
||||
|
||||
@ -232,6 +232,10 @@ $(function() {
|
||||
|
||||
alert("본인의 휴대폰번호로 확인 되었습니다.");
|
||||
|
||||
if($opener.$("form[name=register_cert_reset]") != undefined){
|
||||
$opener.$("form[name=register_cert_reset]").submit();
|
||||
}
|
||||
|
||||
window.close();
|
||||
});
|
||||
</script>
|
||||
|
||||
3
plugin/kgcert/_common.php
Normal file
3
plugin/kgcert/_common.php
Normal file
@ -0,0 +1,3 @@
|
||||
<?php
|
||||
define('G5_CERT_IN_PROG', true);
|
||||
include_once('../../common.php');
|
||||
93
plugin/kgcert/kg_find_result.php
Normal file
93
plugin/kgcert/kg_find_result.php
Normal file
@ -0,0 +1,93 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
$txId = $_POST['txId'];
|
||||
$mid = substr($txId, 6, 10);
|
||||
|
||||
if ($_POST["resultCode"] === "0000") {
|
||||
|
||||
$data = array(
|
||||
'mid' => $mid,
|
||||
'txId' => $txId
|
||||
);
|
||||
|
||||
$post_data = json_encode($data);
|
||||
|
||||
// curl 통신 시작
|
||||
$ch = curl_init();
|
||||
curl_setopt($ch, CURLOPT_URL, $_POST["authRequestUrl"]);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
|
||||
curl_setopt($ch, CURLOPT_POST, 1);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json', 'Content-Type: application/json'));
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
||||
|
||||
$response = curl_exec($ch);
|
||||
curl_close($ch);
|
||||
$res_data = json_decode($response, true);
|
||||
|
||||
if($res_data['resultCode'] === "0000") {
|
||||
|
||||
@insert_cert_history('@password_lost@', 'kg', 'sa'); // 인증성공 시 내역 기록
|
||||
|
||||
$cert_type = 'sa'; // 인증타입
|
||||
$cert_no = $res_data['txId']; // 이니시스 트랜잭션 ID
|
||||
$phone_no = $res_data['userPhone']; // 전화번호
|
||||
$user_name = $res_data['userName']; // 이름
|
||||
$birth_day = $res_data['userBirthday']; // 생년월일
|
||||
$ci = $res_data['userCi']; // CI
|
||||
|
||||
if(!$phone_no)
|
||||
alert_close("정상적인 인증이 아닙니다. 올바른 방법으로 이용해 주세요.");
|
||||
|
||||
$md5_ci = md5($ci . $ci);
|
||||
$phone_no = hyphen_hp_number($phone_no);
|
||||
$mb_dupinfo = $md5_ci;
|
||||
|
||||
$row = sql_fetch("select mb_id from {$g5['member_table']} where mb_id <> '{$member['mb_id']}' and mb_dupinfo = '{$mb_dupinfo}'"); // ci데이터로 찾음
|
||||
if(empty($row['mb_id'])) { // ci로 등록된 계정이 없다면
|
||||
alert_close("인증하신 정보로 가입된 회원정보가 없습니다.");
|
||||
exit;
|
||||
}
|
||||
} else {
|
||||
// 인증실패 curl의 인증실패 체크
|
||||
alert_close('코드 : '.$res_data['resultCode'].' '.urldecode($res_data['resultMsg']));
|
||||
exit;
|
||||
}
|
||||
} else { // resultCode===0000 아닐경우 아래 인증 실패를 출력함
|
||||
// 인증실패
|
||||
alert_close('코드 : '.$_POST['resultCode'].' '.urldecode($_POST['resultMsg']));
|
||||
exit;
|
||||
}
|
||||
|
||||
$g5['title'] = 'KG이니시스 통합인증 결과';
|
||||
include_once(G5_PATH.'/head.sub.php');
|
||||
?>
|
||||
<form name="mbFindForm" method="POST">
|
||||
<input type="hidden" name="mb_id" value="<?php echo $row["mb_id"]; ?>">
|
||||
</form>
|
||||
<script>
|
||||
jQuery(function($) {
|
||||
|
||||
var $opener = window.opener;
|
||||
var is_mobile = false;
|
||||
$opener.name="parentPage";
|
||||
|
||||
if (typeof g5_is_mobile != "undefined" && g5_is_mobile ) {
|
||||
$opener = window.parent;
|
||||
is_mobile = true;
|
||||
} else {
|
||||
$opener = window.opener;
|
||||
}
|
||||
|
||||
document.mbFindForm.target = "parentPage";
|
||||
document.mbFindForm.action = "<?php echo G5_BBS_URL.'/password_reset.php'?>";
|
||||
document.mbFindForm.submit();
|
||||
|
||||
alert("본인인증이 완료되었습니다.");
|
||||
window.close();
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
include_once(G5_PATH.'/tail.sub.php');
|
||||
84
plugin/kgcert/kg_request.php
Normal file
84
plugin/kgcert/kg_request.php
Normal file
@ -0,0 +1,84 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
if($_GET['directAgency'] == "KFTC") alert_close("서비스 준비중입니다.");
|
||||
|
||||
$sql = "select MAX(cr_id) as max_cr_id from {$g5['cert_history_table']} limit 1";
|
||||
$res = sql_fetch($sql);
|
||||
$max_cr_id = $res['max_cr_id'];
|
||||
if(empty($max_cr_id)) $max_cr_id = 0;
|
||||
|
||||
if($config['cf_cert_use'] == 2) { // 실서비스 일때
|
||||
$mid = 'SRA'.$config['cf_cert_kg_mid']; // 부여받은 MID(상점ID) 입력(영업담당자 문의)
|
||||
$apiKey = $config['cf_cert_kg_cd']; // 부여받은 MID 에 대한 apiKey
|
||||
$mTxId ='SIR_'.$max_cr_id;
|
||||
certify_count_check($member['mb_id'], 'sa'); // 금일 인증시도 횟수 체크
|
||||
} else { // 테스트 일때
|
||||
$mid = "INIiasTest";
|
||||
$apiKey = "TGdxb2l3enJDWFRTbTgvREU3MGYwUT09";
|
||||
$mTxId ='test_'.$max_cr_id;
|
||||
}
|
||||
$reqSvcCd ='01';
|
||||
|
||||
// 등록가맹점 확인
|
||||
$plainText1 = hash("sha256",(string)$mid.(string)$mTxId.(string)$apiKey);
|
||||
$authHash = $plainText1;
|
||||
|
||||
$flgFixedUser = (!empty($member['mb_id']) && !empty($member['mb_name']) && !empty($member['mb_hp']) && !empty($member['mb_birth']))? 'Y' : 'N'; // 특정사용자 고정시 : Y 세팅및 아래 해시 데이터 생성
|
||||
|
||||
// php8버전 값체크 경고 때문에 필수값이 아닌 값이 없을수 있는 선택값들은 초기화해주어야함
|
||||
$userName = '';
|
||||
$userPhone = '';
|
||||
$userBirth = '';
|
||||
$userHash = '';
|
||||
|
||||
if($flgFixedUser == 'Y') {
|
||||
$userName = $member['mb_name']; // 사용자 이름
|
||||
$userPhone = preg_replace("/-/","" , $member['mb_hp']); // 사용자 전화번호 하이픈만 제거
|
||||
$userBirth = $member['mb_birth']; // 사용자 생년월일
|
||||
|
||||
$plainText2 = hash("sha256",(string)$userName.(string)$mid.(string)$userPhone.(string)$mTxId.(string)$userBirth.(string)$reqSvcCd);
|
||||
$userHash = $plainText2;
|
||||
}
|
||||
|
||||
switch($_GET['pageType']) {
|
||||
case "register":
|
||||
$resultPage = "/kg_result.php";
|
||||
break;
|
||||
case "find":
|
||||
$resultPage = "/kg_find_result.php";
|
||||
break;
|
||||
default:
|
||||
alert_close('잘못된 접근입니다.');
|
||||
}
|
||||
|
||||
$resultUrl = G5_KGCERT_URL . $resultPage;
|
||||
$g5['title'] = 'KG이니시스 통합인증';
|
||||
include_once(G5_PATH.'/head.sub.php');
|
||||
?>
|
||||
<form name="saForm">
|
||||
<input type="hidden" name="mid" value="<?php echo $mid ?>"> <!-- 필수 값 -->
|
||||
<input type="hidden" name="reqSvcCd" value="<?php echo $reqSvcCd ?>"> <!-- 필수 값 -->
|
||||
<input type="hidden" name="mTxId" value="<?php echo $mTxId ?>"> <!-- 필수 값 -->
|
||||
|
||||
<input type="hidden" name="authHash" value="<?php echo $authHash ?>"> <!-- 필수 값 -->
|
||||
<input type="hidden" name="flgFixedUser" value="<?php echo $flgFixedUser ?>"> <!-- 필수 값 Y/N 특정사용자 인증 요청 여부 -->
|
||||
<input type="hidden" name="userName" value="<?php echo $userName ?>">
|
||||
<input type="hidden" name="userPhone" value="<?php echo $userPhone ?>">
|
||||
<input type="hidden" name="userBirth" value="<?php echo $userBirth ?>">
|
||||
<input type="hidden" name="userHash" value="<?php echo $userHash ?>">
|
||||
<input type="hidden" name="mbId" value="<?php echo $member['mb_id'] ?>">
|
||||
<input type="hidden" name="directAgency" value="<?php echo $_GET['directAgency']; ?>">
|
||||
|
||||
<input type="hidden" name="successUrl" value="<?php echo $resultUrl; ?>"> <!-- 필수 값 -->
|
||||
<input type="hidden" name="failUrl" value="<?php echo $resultUrl; ?>"> <!-- 필수 값 -->
|
||||
<!-- successUrl / failUrl 은 분리 하여 이용가능!-->
|
||||
</form>
|
||||
<script>
|
||||
document.saForm.setAttribute("target", "_self");
|
||||
document.saForm.setAttribute("post", "post");
|
||||
document.saForm.setAttribute("action", "https://sa.inicis.com/auth");
|
||||
document.saForm.submit();
|
||||
</script>
|
||||
<?php
|
||||
include_once(G5_PATH.'/tail.sub.php');
|
||||
113
plugin/kgcert/kg_result.php
Normal file
113
plugin/kgcert/kg_result.php
Normal file
@ -0,0 +1,113 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
$txId = $_POST['txId'];
|
||||
$mid = substr($txId, 6, 10);
|
||||
|
||||
if ($_POST["resultCode"] === "0000") {
|
||||
|
||||
$data = array(
|
||||
'mid' => $mid,
|
||||
'txId' => $txId
|
||||
);
|
||||
|
||||
$post_data = json_encode($data);
|
||||
|
||||
// curl 통신 시작
|
||||
$ch = curl_init();
|
||||
curl_setopt($ch, CURLOPT_URL, $_POST["authRequestUrl"]);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
|
||||
curl_setopt($ch, CURLOPT_POST, 1);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json', 'Content-Type: application/json'));
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
||||
|
||||
$response = curl_exec($ch);
|
||||
curl_close($ch);
|
||||
$res_data = json_decode($response, true);
|
||||
// -------------------- 결과 수신 -------------------------------------------
|
||||
// echo '<결과내역>'." '{$mid}' <br/><br/>";
|
||||
// echo $response;
|
||||
|
||||
if($res_data['resultCode'] === "0000") {
|
||||
|
||||
@insert_cert_history($member['mb_id'], 'kg', 'sa'); // 인증성공 시 내역 기록
|
||||
|
||||
$cert_type = 'sa'; // 인증타입
|
||||
$cert_no = $res_data['txId']; // 이니시스 트랜잭션 ID
|
||||
$phone_no = $res_data['userPhone']; // 전화번호
|
||||
$user_name = $res_data['userName']; // 이름
|
||||
$birth_day = $res_data['userBirthday']; // 생년월일
|
||||
$ci = $res_data['userCi']; // CI
|
||||
|
||||
if(!$phone_no)
|
||||
alert_close("정상적인 인증이 아닙니다. 올바른 방법으로 이용해 주세요.");
|
||||
|
||||
$md5_ci = md5($ci . $ci);
|
||||
$phone_no = hyphen_hp_number($phone_no);
|
||||
$mb_dupinfo = $md5_ci;
|
||||
|
||||
$sql = " select mb_id from {$g5['member_table']} where mb_id <> '{$member['mb_id']}' and mb_dupinfo = '{$mb_dupinfo}' ";
|
||||
$row = sql_fetch($sql);
|
||||
if (!empty($row['mb_id'])) {
|
||||
alert_close("입력하신 본인확인 정보로 가입된 내역이 존재합니다.\\n회원아이디 : ".$row['mb_id']);
|
||||
}
|
||||
|
||||
// hash 데이터
|
||||
|
||||
$md5_cert_no = md5($cert_no);
|
||||
$hash_data = md5($user_name.$cert_type.$birth_day.$md5_cert_no);
|
||||
|
||||
// 성인인증결과
|
||||
$adult_day = date("Ymd", strtotime("-19 years", G5_SERVER_TIME));
|
||||
$adult = ((int)$birth_day <= (int)$adult_day) ? 1 : 0;
|
||||
|
||||
set_session("ss_cert_type", $cert_type);
|
||||
set_session("ss_cert_no", $md5_cert_no);
|
||||
set_session("ss_cert_hash", $hash_data);
|
||||
set_session("ss_cert_adult", $adult);
|
||||
set_session("ss_cert_birth", $birth_day);
|
||||
//set_session("ss_cert_sex", ($sex_code=="01"?"M":"F")); // 이니시스 통합인증은 성별정보 리턴 없음
|
||||
set_session('ss_cert_dupinfo', $mb_dupinfo);
|
||||
|
||||
} else {
|
||||
// 인증실패 curl의 인증실패 체크
|
||||
alert_close('코드 : '.$res_data['resultCode'].' '.urldecode($res_data['resultMsg']));
|
||||
exit;
|
||||
}
|
||||
} else { // resultCode===0000 아닐경우 아래 인증 실패를 출력함
|
||||
// 인증실패
|
||||
alert_close('코드 : '.$_POST['resultCode'].' '.urldecode($_POST['resultMsg']));
|
||||
exit;
|
||||
}
|
||||
|
||||
$g5['title'] = 'KG이니시스 통합인증 결과';
|
||||
include_once(G5_PATH.'/head.sub.php');
|
||||
?>
|
||||
<script>
|
||||
jQuery(function($) {
|
||||
var $opener = window.opener;
|
||||
if (typeof g5_is_mobile != "undefined" && g5_is_mobile ) {
|
||||
$opener = window.parent;
|
||||
is_mobile = true;
|
||||
} else {
|
||||
$opener = window.opener;
|
||||
}
|
||||
|
||||
// 인증정보
|
||||
$opener.$("input[name=cert_type]").val("<?php echo $cert_type; ?>");
|
||||
$opener.$("input[name=mb_name]").val("<?php echo $user_name; ?>").attr("readonly", true);
|
||||
$opener.$("input[name=mb_hp]").val("<?php echo $phone_no; ?>").attr("readonly", true);
|
||||
$opener.$("input[name=cert_no]").val("<?php echo $md5_cert_no; ?>");
|
||||
|
||||
alert("본인인증이 완료되었습니다.");
|
||||
|
||||
if($opener.$("form[name=register_cert_reset]") != undefined){
|
||||
$opener.$("form[name=register_cert_reset]").submit();
|
||||
}
|
||||
window.close();
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
include_once(G5_PATH.'/tail.sub.php');
|
||||
@ -4,6 +4,17 @@ include_once('./_common.php');
|
||||
// 금일 인증시도 회수 체크
|
||||
certify_count_check($member['mb_id'], 'hp');
|
||||
|
||||
switch($_GET['pageType']){ // 페이지 타입 체크
|
||||
case "register":
|
||||
$resultPage = "/AuthOnlyRes.php";
|
||||
break;
|
||||
case "find":
|
||||
$resultPage = "/find_AuthOnlyRes.php";
|
||||
break;
|
||||
default:
|
||||
alert_close('잘못된 접근입니다.');
|
||||
}
|
||||
|
||||
/*
|
||||
* [본인확인 요청페이지]
|
||||
*
|
||||
@ -138,7 +149,7 @@ $_SESSION['lgd_certify'] = $payReqMap;
|
||||
document.getElementById("LGD_PAYTYPE").value = fDoc.document.getElementById('LGD_PAYTYPE').value;
|
||||
|
||||
document.getElementById(lgd_form).target = "_self";
|
||||
document.getElementById("LGD_PAYINFO").action = "AuthOnlyRes.php";
|
||||
document.getElementById("LGD_PAYINFO").action = "<?php echo $resultPage; ?>";
|
||||
document.getElementById(lgd_form).submit();
|
||||
} else {
|
||||
alert("LGD_RESPCODE (결과코드2) : " + fDoc.document.getElementById('LGD_RESPCODE').value + "\n" + "LGD_RESPMSG (결과메시지): " + fDoc.document.getElementById('LGD_RESPMSG').value);
|
||||
@ -161,7 +172,7 @@ $_SESSION['lgd_certify'] = $payReqMap;
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<form method="post" name ="LGD_PAYINFO" id="LGD_PAYINFO" action="<?php echo G5_LGXPAY_URL; ?>/AuthOnlyRes.php">
|
||||
<form method="post" name ="LGD_PAYINFO" id="LGD_PAYINFO" action="<?php echo G5_LGXPAY_URL.$resultPage; ?>">
|
||||
<input type="hidden" name="LGD_ENCODING" value="UTF-8"/>
|
||||
<?php
|
||||
foreach ($payReqMap as $key => $value) {
|
||||
|
||||
@ -84,6 +84,9 @@ if ($xpay->TX()) {
|
||||
//인증요청 결과 성공 DB처리
|
||||
//echo "인증요청 결과 성공 DB처리하시기 바랍니다.<br>";
|
||||
|
||||
// 인증내역기록 인증 성공 즉시 로그를 남기는것으로 수정 2021-09-13
|
||||
@insert_cert_history($member['mb_id'], 'lg', 'hp');
|
||||
|
||||
$cert_no = $xpay->Response('LGD_TID', 0); // LG 인증처리번호
|
||||
$comm_id = $xpay->Response('LGD_FINANCECODE', 0); // 이동통신사 코드
|
||||
$phone_no = $xpay->Response('LGD_MOBILENUM', 0); // 전화번호
|
||||
@ -124,7 +127,7 @@ if ($xpay->TX()) {
|
||||
alert_close("정상적인 인증이 아닙니다. 올바른 방법으로 이용해 주세요.");
|
||||
|
||||
$phone_no = hyphen_hp_number($phone_no);
|
||||
$mb_dupinfo = $di;
|
||||
$mb_dupinfo = md5($ci.$ci);
|
||||
|
||||
if($mb_dupinfo) {
|
||||
$sql = " select mb_id from {$g5['member_table']} where mb_id <> '{$member['mb_id']}' and mb_dupinfo = '{$mb_dupinfo}' ";
|
||||
@ -151,9 +154,6 @@ if ($xpay->TX()) {
|
||||
set_session("ss_cert_sex", $mb_sex);
|
||||
set_session('ss_cert_dupinfo', $mb_dupinfo);
|
||||
|
||||
// 인증내역기록
|
||||
@insert_cert_history($member['mb_id'], 'lg', 'hp');
|
||||
|
||||
} else {
|
||||
//인증요청 결과 실패 DB처리
|
||||
//echo "인증요청 결과 실패 DB처리하시기 바랍니다.<br>";
|
||||
@ -218,6 +218,11 @@ jQuery(function($) {
|
||||
}
|
||||
|
||||
alert("본인의 휴대폰번호로 확인 되었습니다.");
|
||||
|
||||
if($opener.$("form[name=register_cert_reset]") != undefined){
|
||||
$opener.$("form[name=register_cert_reset]").submit();
|
||||
}
|
||||
|
||||
window.close();
|
||||
});
|
||||
</script>
|
||||
|
||||
@ -1,2 +1,3 @@
|
||||
<?php
|
||||
define('G5_CERT_IN_PROG', true);
|
||||
include_once('../../common.php');
|
||||
205
plugin/lgxpay/find_AuthOnlyRes.php
Normal file
205
plugin/lgxpay/find_AuthOnlyRes.php
Normal file
@ -0,0 +1,205 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
$_POST = array_map_deep('conv_unescape_nl', $_POST);
|
||||
|
||||
/*
|
||||
* [본인확인 처리 페이지]
|
||||
*
|
||||
* LG유플러스으로 부터 내려받은 LGD_AUTHONLYKEY(인증Key)를 가지고 최종 인증요청.(파라미터 전달시 POST를 사용하세요)
|
||||
*/
|
||||
|
||||
/*
|
||||
*************************************************
|
||||
* 1.최종인증 요청 - BEGIN
|
||||
*************************************************
|
||||
*/
|
||||
|
||||
//LG유플러스 결제 서비스 선택(test:테스트, service:서비스)
|
||||
if($config['cf_cert_use'] == 2)
|
||||
$CST_PLATFORM = 'service';
|
||||
else
|
||||
$CST_PLATFORM = 'test';
|
||||
$CST_MID = 'si_'.$config['cf_lg_mid']; //상점아이디(LG유플러스으로 부터 발급받으신 상점아이디를 입력하세요)
|
||||
//테스트 아이디는 't'를 반드시 제외하고 입력하세요.
|
||||
$LGD_MID = (('test' == $CST_PLATFORM) ? 't' : '').$CST_MID; //상점아이디(자동생성)
|
||||
$LGD_AUTHONLYKEY = $_POST['LGD_AUTHONLYKEY']; //LG유플러스으로부터 부여받은 인증키
|
||||
$LGD_PAYTYPE = $_POST['LGD_PAYTYPE']; //인증요청타입 (신용카드:ASC001, 휴대폰:ASC002, 계좌:ASC004)
|
||||
|
||||
require_once(G5_LGXPAY_PATH.'/lgdacom/XPayClient.php');
|
||||
|
||||
// mall.conf 설정 추가를 위한 XPayClient 확장
|
||||
class XPay extends XPayClient
|
||||
{
|
||||
public function set_config_value($key, $val)
|
||||
{
|
||||
$this->config[$key] = $val;
|
||||
}
|
||||
}
|
||||
|
||||
$configPath = G5_LGXPAY_PATH.'/lgdacom'; //LG유플러스에서 제공한 환경파일("/conf/lgdacom.conf,/conf/mall.conf") 위치 지정.
|
||||
|
||||
$xpay = new XPay($configPath, $CST_PLATFORM);
|
||||
|
||||
// Mert Key 설정
|
||||
$xpay->set_config_value('t'.$LGD_MID, $config['cf_lg_mert_key']);
|
||||
$xpay->set_config_value($LGD_MID, $config['cf_lg_mert_key']);
|
||||
|
||||
$xpay->Init_TX($LGD_MID);
|
||||
$xpay->Set("LGD_TXNAME", "AuthOnlyByKey");
|
||||
$xpay->Set("LGD_AUTHONLYKEY", $LGD_AUTHONLYKEY);
|
||||
$xpay->Set("LGD_PAYTYPE", $LGD_PAYTYPE);
|
||||
|
||||
$g5['title'] = '휴대폰인증 결과';
|
||||
include_once(G5_PATH.'/head.sub.php');
|
||||
|
||||
/*
|
||||
*************************************************
|
||||
* 1.최종인증 요청(수정하지 마세요) - END
|
||||
*************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
* 2. 최종인증 요청 결과처리
|
||||
*
|
||||
* 최종 인증요청 결과 리턴 파라미터는 연동메뉴얼을 참고하시기 바랍니다.
|
||||
*/
|
||||
if ($xpay->TX()) {
|
||||
//1)인증결과 화면처리(성공,실패 결과 처리를 하시기 바랍니다.)
|
||||
|
||||
/*
|
||||
echo "인증요청이 완료되었습니다. <br>";
|
||||
echo "TX Response_code = " . $xpay->Response_Code() . "<br>";
|
||||
echo "TX Response_msg = " . $xpay->Response_Msg() . "<p>";
|
||||
|
||||
$keys = $xpay->Response_Names();
|
||||
foreach($keys as $name) {
|
||||
echo $name . " = " . $xpay->Response($name, 0) . "<br>";
|
||||
}
|
||||
|
||||
echo "</p>";
|
||||
*/
|
||||
|
||||
if( "0000" == $xpay->Response_Code() ) {
|
||||
//인증요청 결과 성공 DB처리
|
||||
//echo "인증요청 결과 성공 DB처리하시기 바랍니다.<br>";
|
||||
// 인증내역기록 인증 성공하면 로그를 남기는것으로 수정 2021-09-13
|
||||
@insert_cert_history($member['mb_id'], 'lg', 'hp');
|
||||
|
||||
$cert_no = $xpay->Response('LGD_TID', 0); // LG 인증처리번호
|
||||
$comm_id = $xpay->Response('LGD_FINANCECODE', 0); // 이동통신사 코드
|
||||
$phone_no = $xpay->Response('LGD_MOBILENUM', 0); // 전화번호
|
||||
$user_name = $xpay->Response('LGD_MOBILE_SUBAUTH_NAME', 0); // 이름
|
||||
$birth_day = $xpay->Response('LGD_MOBILE_SUBAUTH_BIRTH', 0); // 생년월일
|
||||
$sex_code = $xpay->Response('LGD_MOBILE_SUBAUTH_SEX', 0); // 성별코드
|
||||
$ci = $xpay->Response('LGD_AUTHSUB_CI', 0); // CI
|
||||
$di = $xpay->Response('LGD_AUTHSUB_DI', 0); // DI 중복가입 확인값
|
||||
|
||||
// 내/외국인
|
||||
if($sex_code > 4)
|
||||
$local_code = 2; // 외국인
|
||||
else
|
||||
$local_code = 1; // 내국인
|
||||
|
||||
// 남/여구분
|
||||
if($sex_code % 2 == 0)
|
||||
$mb_sex = 'F';
|
||||
else
|
||||
$mb_sex = 'M';
|
||||
|
||||
// 생년월일
|
||||
if($sex_code < 5) {
|
||||
if($sex_code <= 2)
|
||||
$birth_prefix = '19';
|
||||
else
|
||||
$birth_prefix = '20';
|
||||
} else {
|
||||
if($sex_code <= 6)
|
||||
$birth_prefix = '19';
|
||||
else
|
||||
$birth_prefix = '20';
|
||||
}
|
||||
$birth_day = $birth_prefix.$birth_day;
|
||||
|
||||
// 정상인증인지 체크
|
||||
if(!$phone_no)
|
||||
alert_close("정상적인 인증이 아닙니다. 올바른 방법으로 이용해 주세요.");
|
||||
|
||||
$phone_no = hyphen_hp_number($phone_no);
|
||||
$mb_dupinfo = $di;
|
||||
$md5_ci = md5($ci.$ci);
|
||||
|
||||
$row = sql_fetch("select mb_id from {$g5['member_table']} where mb_id <> '{$member['mb_id']}' and mb_dupinfo = '{$md5_ci}'"); // ci데이터로 찾음
|
||||
if (empty($row['mb_id'])) { // ci로 등록된 계정이 없다면
|
||||
$row = sql_fetch("select mb_id from {$g5['member_table']} where mb_id <> '{$member['mb_id']}' and mb_dupinfo = '{$mb_dupinfo}'"); // di데이터로 찾음
|
||||
if(empty($row['mb_id'])) {
|
||||
alert_close("인증하신 정보로 가입된 회원정보가 없습니다.");
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
//인증요청 결과 실패 DB처리
|
||||
//echo "인증요청 결과 실패 DB처리하시기 바랍니다.<br>";
|
||||
|
||||
if( G5_IS_MOBILE ){
|
||||
echo '<script>'.PHP_EOL;
|
||||
echo 'window.parent.$("#cert_info").css("display", "");'.PHP_EOL;
|
||||
echo 'window.parent.$("#lgu_cert" ).css("display", "none");'.PHP_EOL;
|
||||
echo 'alert("인증요청이 취소 또는 실패하였습니다.\\n\\n코드 : '.$xpay->Response_Code().' '.$xpay->Response_Msg().'")';
|
||||
echo '</script>'.PHP_EOL;
|
||||
} else {
|
||||
alert_close('인증요청이 취소 또는 실패하였습니다.\\n\\n코드 : '.$xpay->Response_Code().' '.$xpay->Response_Msg());
|
||||
}
|
||||
exit;
|
||||
}
|
||||
} else {
|
||||
//2)API 요청실패 화면처리
|
||||
/*
|
||||
echo "인증요청이 실패하였습니다. <br>";
|
||||
echo "TX Response_code = " . $xpay->Response_Code() . "<br>";
|
||||
echo "TX Response_msg = " . $xpay->Response_Msg() . "<p>";
|
||||
|
||||
//인증요청 결과 실패 DB처리
|
||||
echo "인증요청 결과 실패 DB처리하시기 바랍니다.<br>";
|
||||
*/
|
||||
|
||||
if( G5_IS_MOBILE ){
|
||||
echo '<script>'.PHP_EOL;
|
||||
echo 'window.parent.$("#cert_info").css("display", "");'.PHP_EOL;
|
||||
echo 'window.parent.$("#lgu_cert" ).css("display", "none");'.PHP_EOL;
|
||||
echo 'alert("인증요청이 실패하였습니다.\\n\\n코드 : '.$xpay->Response_Code().' '.$xpay->Response_Msg().'")';
|
||||
echo '</script>'.PHP_EOL;
|
||||
} else {
|
||||
alert_close('인증요청이 실패하였습니다.\\n\\n코드 : '.$xpay->Response_Code().' '.$xpay->Response_Msg());
|
||||
}
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
<form name="mbFindForm" method="POST">
|
||||
<input type="hidden" name="mb_id" value="<?php echo $row["mb_id"]; ?>">
|
||||
</form>
|
||||
<script>
|
||||
jQuery(function($) {
|
||||
|
||||
var $opener = window.opener;
|
||||
var is_mobile = false;
|
||||
$opener.name="parentPage";
|
||||
|
||||
if (typeof g5_is_mobile != "undefined" && g5_is_mobile ) {
|
||||
$opener = window.parent;
|
||||
is_mobile = true;
|
||||
} else {
|
||||
$opener = window.opener;
|
||||
}
|
||||
|
||||
document.mbFindForm.target = "parentPage";
|
||||
document.mbFindForm.action = "<?php echo G5_BBS_URL.'/password_reset.php'?>";
|
||||
document.mbFindForm.submit();
|
||||
|
||||
alert("본인인증이 완료되었습니다.");
|
||||
window.close();
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
include_once(G5_PATH.'/tail.sub.php');
|
||||
@ -1,2 +1,3 @@
|
||||
<?php
|
||||
define('G5_CERT_IN_PROG', true);
|
||||
include_once('../../common.php');
|
||||
155
plugin/okname/find_hpcert2.php
Normal file
155
plugin/okname/find_hpcert2.php
Normal file
@ -0,0 +1,155 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
$check_arrays = array('exe', 'keypath', 'memId', 'endPointURL', 'endPointUrl', 'logPath');
|
||||
|
||||
foreach($check_arrays as $key){
|
||||
if( isset($_REQUEST[$key]) && $_REQUEST[$key] ){
|
||||
die('bad request');
|
||||
}
|
||||
|
||||
$$key = '';
|
||||
}
|
||||
|
||||
// KISA 취약점 내용(KVE-2018-0291) hpcert1.php의 $cmd 함수에 대한 인자 값은 hpcert_config.php 파일에서 설정되나, 이를 다른 페이지에서 포함한 뒤 호출할 시 임의 값 설정 가능
|
||||
// 이에 include_once 를 require 로 수정함
|
||||
require('./hpcert.config.php');
|
||||
/**************************************************************************
|
||||
파일명 : safe_hs_cert3.php
|
||||
|
||||
생년월일 본인 확인서비스 결과 화면(return url)
|
||||
**************************************************************************/
|
||||
|
||||
/* 공통 리턴 항목 */
|
||||
//$idcfMbrComCd = $_REQUEST['idcf_mbr_com_cd']; // 고객사코드
|
||||
$idcfMbrComCd = $memId;
|
||||
$hsCertSvcTxSeqno = isset($_REQUEST['hs_cert_svc_tx_seqno']) ? $_REQUEST['hs_cert_svc_tx_seqno'] : ''; // 거래번호
|
||||
$rqstSiteNm = isset($_REQUEST['rqst_site_nm']) ? $_REQUEST['rqst_site_nm'] : ''; // 접속도메인
|
||||
$hsCertRqstCausCd = isset($_REQUEST['hs_cert_rqst_caus_cd']) ? $_REQUEST['hs_cert_rqst_caus_cd'] : ''; // 인증요청사유코드 2byte (00:회원가입, 01:성인인증, 02:회원정보수정, 03:비밀번호찾기, 04:상품구매, 99:기타)
|
||||
|
||||
$resultCd = isset($_REQUEST['result_cd']) ? $_REQUEST['result_cd'] : ''; // 결과코드
|
||||
$resultMsg = isset($_REQUEST['result_msg']) ? $_REQUEST['result_msg'] : ''; // 결과메세지
|
||||
$certDtTm = isset($_REQUEST['cert_dt_tm']) ? $_REQUEST['cert_dt_tm'] : ''; // 인증일시
|
||||
|
||||
if($resultCd != 'B000') {
|
||||
alert_close('휴대폰 본인확인 중 오류가 발생했습니다. 오류코드 : '.$resultCd.'\\n\\n문의는 코리아크레딧뷰로 고객센터 02-708-1000 로 해주십시오.');
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* 모듈 호출 ; 생년월일 본인 확인서비스 결과 데이터를 복호화한다.
|
||||
**************************************************************************/
|
||||
$encInfo = isset($_REQUEST['encInfo']) ? $_REQUEST['encInfo'] : '';
|
||||
if(preg_match('~[^0-9a-zA-Z+/=]~', $encInfo, $match)) {echo "입력 값 확인이 필요합니다"; exit;}
|
||||
|
||||
//KCB서버 공개키
|
||||
$WEBPUBKEY = isset($_REQUEST['WEBPUBKEY']) ? trim($_REQUEST['WEBPUBKEY']) : '';
|
||||
if(preg_match('~[^0-9a-zA-Z+/=]~', $WEBPUBKEY, $match)) {echo "입력 값 확인이 필요합니다"; exit;}
|
||||
|
||||
//KCB서버 서명값
|
||||
$WEBSIGNATURE = isset($_REQUEST['WEBSIGNATURE']) ? trim($_REQUEST['WEBSIGNATURE']) : '';
|
||||
if(preg_match('~[^0-9a-zA-Z+/=]~', $WEBSIGNATURE, $match)) {echo "입력 값 확인이 필요합니다"; exit;}
|
||||
|
||||
// ########################################################################
|
||||
// # 암호화키 파일 설정 (절대경로) - 파일은 주어진 파일명으로 자동 생성 됨
|
||||
// ########################################################################
|
||||
$keypath = G5_OKNAME_PATH.'/key/safecert_'.$idcfMbrComCd.'.key';
|
||||
|
||||
$cpubkey = $WEBPUBKEY; //server publickey
|
||||
$csig = $WEBSIGNATURE; //server signature
|
||||
|
||||
// ########################################################################
|
||||
// # 로그 경로 지정 및 권한 부여 (절대경로)
|
||||
// # 옵션값에 'L'을 추가하는 경우에만 로그가 생성됨.
|
||||
// ########################################################################
|
||||
$option = 'SU';
|
||||
|
||||
// 명령어
|
||||
$cmd = "$exe $keypath $idcfMbrComCd $endPointUrl $WEBPUBKEY $WEBSIGNATURE $encInfo $logPath $option";
|
||||
|
||||
// 실행
|
||||
exec($cmd, $out, $ret);
|
||||
|
||||
// 인증내역기록
|
||||
@insert_cert_history($member['mb_id'], 'kcb', 'hp');
|
||||
|
||||
if($ret == 0) {
|
||||
// 결과라인에서 값을 추출
|
||||
foreach($out as $a => $b) {
|
||||
if($a < 17) {
|
||||
$field[$a] = $b;
|
||||
}
|
||||
}
|
||||
$resultCd = $field[0];
|
||||
}
|
||||
else {
|
||||
if($ret <=200)
|
||||
$resultCd=sprintf("B%03d", $ret);
|
||||
else
|
||||
$resultCd=sprintf("S%03d", $ret);
|
||||
}
|
||||
|
||||
/*
|
||||
echo "처리결과코드 :$resultCd <br/>";
|
||||
echo "처리결과메시지 :$field[1] <br/>";
|
||||
echo "거래일련번호 :$field[2] <br/>";
|
||||
echo "인증일시 :$field[3] <br/>";
|
||||
echo "DI :$field[4] <br/>";
|
||||
echo "CI :$field[5] <br/>";
|
||||
echo "성명 :$field[7] <br/>";
|
||||
echo "생년월일 :$field[8] <br/>";
|
||||
echo "성별 :$field[9] <br/>";
|
||||
echo "내외국인구분 :$field[10] <br/>";
|
||||
echo "통신사코드 :$field[11] <br/>";
|
||||
echo "휴대폰번호 :$field[12] <br/>";
|
||||
echo "리턴메시지 :$field[16] <br/>";
|
||||
*/
|
||||
|
||||
// 인증결과처리
|
||||
$mb_name = $field[7];
|
||||
$req_num = $field[12];
|
||||
$mb_birth = $field[8];
|
||||
$mb_dupinfo = $field[4];
|
||||
$ci = $field[5];
|
||||
|
||||
$phone_no = hyphen_hp_number($req_num);
|
||||
$md5_ci = md5($ci.$ci);
|
||||
|
||||
$row = sql_fetch("select mb_id from {$g5['member_table']} where mb_id <> '{$member['mb_id']}' and mb_dupinfo = '{$md5_ci}'"); // ci데이터로 찾음
|
||||
if (empty($row['mb_id'])) { // ci로 등록된 계정이 없다면
|
||||
$row = sql_fetch("select mb_id from {$g5['member_table']} where mb_id <> '{$member['mb_id']}' and mb_dupinfo = '{$mb_dupinfo}'"); // di데이터로 찾음
|
||||
if(empty($row['mb_id'])) {
|
||||
alert_close("인증하신 정보로 가입된 회원정보가 없습니다.");
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
$g5['title'] = 'KCB 휴대폰 본인확인';
|
||||
include_once(G5_PATH.'/head.sub.php');
|
||||
?>
|
||||
<form name="mbFindForm" method="POST">
|
||||
<input type="hidden" name="mb_id" value="<?php echo $row["mb_id"]; ?>">
|
||||
</form>
|
||||
<script>
|
||||
jQuery(function($) {
|
||||
|
||||
var $opener = window.opener;
|
||||
var is_mobile = false;
|
||||
$opener.name="parentPage";
|
||||
|
||||
if (typeof g5_is_mobile != "undefined" && g5_is_mobile ) {
|
||||
$opener = window.parent;
|
||||
is_mobile = true;
|
||||
} else {
|
||||
$opener = window.opener;
|
||||
}
|
||||
|
||||
document.mbFindForm.target = "parentPage";
|
||||
document.mbFindForm.action = "<?php echo G5_BBS_URL.'/password_reset.php'?>";
|
||||
document.mbFindForm.submit();
|
||||
|
||||
alert("본인인증이 완료되었습니다.");
|
||||
window.close();
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
include_once(G5_PATH.'/tail.sub.php');
|
||||
129
plugin/okname/find_ipin2.php
Normal file
129
plugin/okname/find_ipin2.php
Normal file
@ -0,0 +1,129 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
$check_arrays = array('exe', 'keypath', 'memid', 'EndPointURL', 'cpubkey', 'csig', 'encdata', 'logpath', 'option');
|
||||
|
||||
foreach($check_arrays as $key){
|
||||
if( isset($_REQUEST[$key]) && $_REQUEST[$key] ){
|
||||
die('bad request');
|
||||
}
|
||||
|
||||
$$key = '';
|
||||
}
|
||||
|
||||
require('./ipin.config.php');
|
||||
|
||||
//아이핀팝업에서 조회한 PERSONALINFO이다.
|
||||
@$encPsnlInfo = isset($_REQUEST["encPsnlInfo"]) ? $_REQUEST["encPsnlInfo"] : '';
|
||||
if(preg_match('~[^0-9a-zA-Z+/=]~', $encPsnlInfo, $match)) {echo "입력 값 확인이 필요합니다"; exit;}
|
||||
|
||||
//KCB서버 공개키
|
||||
@$WEBPUBKEY = isset($_REQUEST["WEBPUBKEY"]) ? trim($_REQUEST["WEBPUBKEY"]) : '';
|
||||
if(preg_match('~[^0-9a-zA-Z+/=]~', $WEBPUBKEY, $match)) {echo "입력 값 확인이 필요합니다"; exit;}
|
||||
|
||||
//KCB서버 서명값
|
||||
@$WEBSIGNATURE = isset($_REQUEST["WEBSIGNATURE"]) ? trim($_REQUEST["WEBSIGNATURE"]) : '';
|
||||
if(preg_match('~[^0-9a-zA-Z+/=]~', $WEBSIGNATURE, $match)) {echo "입력 값 확인이 필요합니다"; exit;}
|
||||
|
||||
//아이핀 서버와 통신을 위한 키파일 생성
|
||||
// 파라미터 정의
|
||||
$cpubkey = $WEBPUBKEY; //server publickey
|
||||
$csig = $WEBSIGNATURE; //server signature
|
||||
$encdata = $encPsnlInfo; //PERSONALINFO
|
||||
$option = "SU";
|
||||
|
||||
// 명령어
|
||||
$cmd = "$exe $keypath $memid $EndPointURL $cpubkey $csig $encdata $logpath $option";
|
||||
|
||||
// 실행
|
||||
exec($cmd, $out, $ret);
|
||||
|
||||
// 인증내역기록
|
||||
@insert_cert_history($member['mb_id'], 'kcb', 'ipin');
|
||||
|
||||
if($ret != 0) {
|
||||
if($ret <=200)
|
||||
$resultCd=sprintf("B%03d", $ret);
|
||||
else
|
||||
$resultCd=sprintf("S%03d", $ret);
|
||||
|
||||
alert_close('아이핀 본인확인 중 오류가 발생했습니다. 오류코드 : '.$resultCd.'\\n\\n문의는 코리아크레딧뷰로 고객센터 02-708-1000 로 해주십시오.');
|
||||
}
|
||||
|
||||
// 결과라인에서 값을 추출
|
||||
foreach($out as $a => $b) {
|
||||
if($a < 13) {
|
||||
$field[$a] = $b;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
$field_name_IPIN_DEC = array(
|
||||
"dupInfo ", // 0
|
||||
"coinfo1 ", // 1
|
||||
"coinfo2 ", // 2
|
||||
"ciupdate ", // 3
|
||||
"virtualNo ", // 4
|
||||
"cpCode ", // 5
|
||||
"realName ", // 6
|
||||
"cpRequestNumber", // 7
|
||||
"age ", // 8
|
||||
"sex ", // 9
|
||||
"nationalInfo ", // 10
|
||||
"birthDate ", // 11
|
||||
"authInfo ", // 12
|
||||
);
|
||||
*/
|
||||
|
||||
$mb_name = $field[6];
|
||||
$req_num = $field[7];
|
||||
$mb_birth = $field[11];
|
||||
$mb_dupinfo = $field[0];
|
||||
if(!empty($field[1])) { // 아이핀은 리턴받는 ci 데이터가 두가지인걸로 보아 개인별로 받는 곳이 다를 수도 있을것 같아서 추가함 2021-09-13 hjkim7153
|
||||
$ci = $field[1];
|
||||
}else if(!empty($field[2])) {
|
||||
$ci = $field[2];
|
||||
}else{
|
||||
alert_close('아이핀 본인확인 중 오류가 발생했습니다. (ci 정보 없음) 오류코드 : '.$resultCd.'\\n\\n문의는 코리아크레딧뷰로 고객센터 02-708-1000 로 해주십시오.');
|
||||
}
|
||||
$md5_ci = md5($ci.$ci);
|
||||
|
||||
$row = sql_fetch("select mb_id from {$g5['member_table']} where mb_id <> '{$member['mb_id']}' and mb_dupinfo = '{$md5_ci}'"); // ci데이터로 찾음
|
||||
if (empty($row['mb_id'])) { // ci로 등록된 계정이 없다면
|
||||
$row = sql_fetch("select mb_id from {$g5['member_table']} where mb_id <> '{$member['mb_id']}' and mb_dupinfo = '{$mb_dupinfo}'"); // di데이터로 찾음
|
||||
if(empty($row['mb_id'])) {
|
||||
alert_close("인증하신 정보로 가입된 회원정보가 없습니다.");
|
||||
exit;
|
||||
}
|
||||
}
|
||||
$g5['title'] = 'KCB 아이핀 본인확인';
|
||||
include_once(G5_PATH.'/head.sub.php');
|
||||
?>
|
||||
|
||||
<form name="mbFindForm" method="POST">
|
||||
<input type="hidden" name="mb_id" value="<?php echo $row["mb_id"]; ?>">
|
||||
</form>
|
||||
<script>
|
||||
jQuery(function($) {
|
||||
|
||||
var $opener = window.opener;
|
||||
var is_mobile = false;
|
||||
$opener.name="parentPage";
|
||||
|
||||
if (typeof g5_is_mobile != "undefined" && g5_is_mobile ) {
|
||||
$opener = window.parent;
|
||||
is_mobile = true;
|
||||
} else {
|
||||
$opener = window.opener;
|
||||
}
|
||||
|
||||
document.mbFindForm.target = "parentPage";
|
||||
document.mbFindForm.action = "<?php echo G5_BBS_URL.'/password_reset.php'?>";
|
||||
document.mbFindForm.submit();
|
||||
|
||||
alert("본인인증이 완료되었습니다.");
|
||||
window.close();
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
include_once(G5_PATH.'/tail.sub.php');
|
||||
@ -80,4 +80,5 @@ if($config['cf_cert_use'] == 2) {
|
||||
// ########################################################################
|
||||
// # 리턴 URL 설정
|
||||
// ########################################################################
|
||||
$returnUrl = escapeshellarg(G5_OKNAME_URL.'/hpcert2.php'); // 본인인증 완료후 리턴될 URL (도메인 포함 full path);
|
||||
if(!empty($resultPage))
|
||||
$returnUrl = escapeshellarg(G5_OKNAME_URL.$resultPage); // 본인인증 완료후 리턴될 URL (도메인 포함 full path);
|
||||
@ -14,6 +14,16 @@ foreach($check_arrays as $key){
|
||||
// 금일 인증시도 회수 체크
|
||||
certify_count_check($member['mb_id'], 'hp');
|
||||
|
||||
switch($_GET['pageType']){
|
||||
case "register":
|
||||
$resultPage = "/hpcert2.php";
|
||||
break;
|
||||
case "find":
|
||||
$resultPage = "/find_hpcert2.php";
|
||||
break;
|
||||
default:
|
||||
alert_close('잘못된 접근입니다.');
|
||||
}
|
||||
// KISA 취약점 내용(KVE-2018-0291) hpcert1.php의 $cmd 함수에 대한 인자 값은 hpcert_config.php 파일에서 설정되나, 이를 다른 페이지에서 포함한 뒤 호출할 시 임의 값 설정 가능
|
||||
// 이에 include_once 를 require 로 수정함
|
||||
require('./hpcert.config.php');
|
||||
|
||||
@ -108,13 +108,15 @@ echo "리턴메시지 :$field[16] <br/>";
|
||||
$mb_name = $field[7];
|
||||
$req_num = $field[12];
|
||||
$mb_birth = $field[8];
|
||||
$mb_dupinfo = $field[4];
|
||||
$di = $field[4];
|
||||
$ci = $field[5];
|
||||
$mb_dupinfo = md5($ci.$ci); // 통합인증 추가 후 ci로 변경
|
||||
$phone_no = hyphen_hp_number($req_num);
|
||||
|
||||
// 중복정보 체크
|
||||
$sql = " select mb_id from {$g5['member_table']} where mb_id <> '{$member['mb_id']}' and mb_dupinfo = '{$mb_dupinfo}' ";
|
||||
$row = sql_fetch($sql);
|
||||
if ($row['mb_id']) {
|
||||
if (!empty($row['mb_id'])) {
|
||||
alert_close("입력하신 본인확인 정보로 가입된 내역이 존재합니다.\\n회원아이디 : ".$row['mb_id']);
|
||||
}
|
||||
|
||||
@ -149,6 +151,11 @@ $(function() {
|
||||
$opener.$("input[name=cert_no]").val("<?php echo $md5_cert_no; ?>");
|
||||
|
||||
alert("본인의 휴대폰번호로 확인 되었습니다.");
|
||||
|
||||
if($opener.$("form[name=register_cert_reset]") != undefined){
|
||||
$opener.$("form[name=register_cert_reset]").submit();
|
||||
}
|
||||
|
||||
window.close();
|
||||
});
|
||||
</script>
|
||||
|
||||
@ -36,7 +36,8 @@ if($config['cf_cert_use'] == 2) {
|
||||
}
|
||||
|
||||
$idpCode = 'V';
|
||||
$returnUrl = G5_OKNAME_URL.'/ipin2.php'; // 아이핀 인증을 마치고 돌아올 페이지 주소
|
||||
if(!empty($resultPage))
|
||||
$returnUrl = G5_OKNAME_URL.$resultPage; // 아이핀 인증을 마치고 돌아올 페이지 주소
|
||||
$keypath = G5_OKNAME_PATH.'/key/okname.key'; // 키파일이 생성될 위치. 웹서버에 해당파일을 생성할 권한 필요.
|
||||
$memid = $cpCode; // 회원사코드
|
||||
$reserved1 = '0'; //reserved1
|
||||
|
||||
@ -14,6 +14,16 @@ foreach($check_arrays as $key){
|
||||
// 금일 인증시도 회수 체크
|
||||
certify_count_check($member['mb_id'], 'ipin');
|
||||
|
||||
switch($_GET['pageType']){
|
||||
case "register":
|
||||
$resultPage = "/ipin2.php";
|
||||
break;
|
||||
case "find":
|
||||
$resultPage = "/find_ipin2.php";
|
||||
break;
|
||||
default:
|
||||
alert_close('잘못된 접근입니다.');
|
||||
}
|
||||
// KISA 취약점 내용(KVE-2018-0291) hpcert1.php의 $cmd 함수에 대한 인자 값은 hpcert_config.php 파일에서 설정되나, 이를 다른 페이지에서 포함한 뒤 호출할 시 임의 값 설정 가능
|
||||
// 이에 include_once 를 require 로 수정함
|
||||
require('./ipin.config.php');
|
||||
|
||||
@ -78,12 +78,20 @@ $field_name_IPIN_DEC = array(
|
||||
$mb_name = $field[6];
|
||||
$req_num = $field[7];
|
||||
$mb_birth = $field[11];
|
||||
$mb_dupinfo = $field[0];
|
||||
$di = $field[0];
|
||||
if(!empty($field[1])) { // 아이핀은 리턴받는 ci 데이터가 두가지인걸로 보아 개인별로 받는 곳이 다를 수도 있을것 같아서 추가함 2021-09-13 hjkim7153
|
||||
$ci = $field[1];
|
||||
}else if(!empty($field[2])) {
|
||||
$ci = $field[2];
|
||||
}else{
|
||||
alert_close('아이핀 본인확인 중 오류가 발생했습니다. (ci 정보 없음) 오류코드 : '.$resultCd.'\\n\\n문의는 코리아크레딧뷰로 고객센터 02-708-1000 로 해주십시오.');
|
||||
}
|
||||
$mb_dupinfo = md5($ci.$ci); // 통합인증 추가 후 ci로 변경
|
||||
|
||||
// 중복정보 체크
|
||||
$sql = " select mb_id from {$g5['member_table']} where mb_id <> '{$member['mb_id']}' and mb_dupinfo = '{$mb_dupinfo}' ";
|
||||
$row = sql_fetch($sql);
|
||||
if ($row['mb_id']) {
|
||||
if (!empty($row['mb_id'])) {
|
||||
alert_close("입력하신 본인확인 정보로 가입된 내역이 존재합니다.\\n회원아이디 : ".$row['mb_id']);
|
||||
}
|
||||
|
||||
@ -115,6 +123,10 @@ $(function() {
|
||||
$opener.$("input[name=mb_name]").val("<?php echo $mb_name; ?>").attr("readonly", true);
|
||||
$opener.$("input[name=cert_no]").val("<?php echo $md5_cert_no; ?>");
|
||||
|
||||
if($opener.$("form[name=register_cert_reset]") != undefined){
|
||||
$opener.$("form[name=register_cert_reset]").submit();
|
||||
}
|
||||
|
||||
window.close();
|
||||
});
|
||||
</script>
|
||||
|
||||
@ -25,6 +25,7 @@ $is_exists_social_account = social_before_join_check($url);
|
||||
$user_nick = social_relace_nick($user_profile->displayName);
|
||||
$user_email = isset($user_profile->emailVerified) ? $user_profile->emailVerified : $user_profile->email;
|
||||
$user_id = $user_profile->sid ? preg_replace("/[^0-9a-z_]+/i", "", $user_profile->sid) : get_social_convert_id($user_profile->identifier, $provider_name);
|
||||
$user_phone = $user_profile->phone;
|
||||
|
||||
if(! $user_nick) {
|
||||
$tmp = explode('_', $user_id);
|
||||
|
||||
@ -3,6 +3,10 @@ include_once('./_common.php');
|
||||
include_once(G5_LIB_PATH.'/register.lib.php');
|
||||
include_once(G5_LIB_PATH.'/mailer.lib.php');
|
||||
|
||||
if (!($w == '' || $w == 'u')) {
|
||||
alert('w 값이 제대로 넘어오지 않았습니다.');
|
||||
}
|
||||
|
||||
if( ! $config['cf_social_login_use'] ){
|
||||
alert('소셜 로그인을 사용하지 않습니다.', G5_URL);
|
||||
}
|
||||
@ -27,6 +31,7 @@ $mb_password_re = isset($_POST['mb_password_re']) ? trim($_POST['mb_password_re'
|
||||
$mb_nick = isset($_POST['mb_nick']) ? trim(strip_tags($_POST['mb_nick'])) : '';
|
||||
$mb_email = isset($_POST['mb_email']) ? trim($_POST['mb_email']) : '';
|
||||
$mb_name = isset($_POST['mb_name']) ? clean_xss_tags(trim(strip_tags($_POST['mb_name']))) : '';
|
||||
$mb_hp = isset($_POST['mb_hp']) ? trim($_POST['mb_hp']) : '';
|
||||
$mb_email = get_email_address($mb_email);
|
||||
|
||||
// 이름, 닉네임에 utf-8 이외의 문자가 포함됐다면 오류
|
||||
@ -93,6 +98,52 @@ $mb_mailling = (isset($_POST['mb_mailling']) && $_POST['mb_mailling']) ? 1 : 0;
|
||||
//회원 정보 공개
|
||||
$mb_open = (isset($_POST['mb_open']) && $_POST['mb_open']) ? 1 : 0;
|
||||
|
||||
//===============================================================
|
||||
// 본인확인
|
||||
//---------------------------------------------------------------
|
||||
if($config['cf_cert_use'] && $config['cf_cert_req']){
|
||||
$mb_hp = hyphen_hp_number($mb_hp);
|
||||
if($config['cf_cert_use'] && get_session('ss_cert_type') && get_session('ss_cert_dupinfo')) {
|
||||
// 중복체크
|
||||
$sql = " select mb_id from {$g5['member_table']} where mb_id <> '{$member['mb_id']}' and mb_dupinfo = '".get_session('ss_cert_dupinfo')."' ";
|
||||
$row = sql_fetch($sql);
|
||||
if (!empty($row['mb_id'])) {
|
||||
alert("입력하신 본인확인 정보로 가입된 내역이 존재합니다.");
|
||||
}
|
||||
}
|
||||
|
||||
$sql_certify = '';
|
||||
$md5_cert_no = get_session('ss_cert_no');
|
||||
$cert_type = get_session('ss_cert_type');
|
||||
if ($config['cf_cert_use'] && $cert_type && $md5_cert_no) {
|
||||
// 해시값이 같은 경우에만 본인확인 값을 저장한다.
|
||||
if (get_session('ss_cert_hash') == md5($mb_name.$cert_type.get_session('ss_cert_birth').$md5_cert_no)) {
|
||||
$sql_certify .= " , mb_hp = '{$mb_hp}' ";
|
||||
$sql_certify .= " , mb_certify = '{$cert_type}' ";
|
||||
$sql_certify .= " , mb_adult = '".get_session('ss_cert_adult')."' ";
|
||||
$sql_certify .= " , mb_birth = '".get_session('ss_cert_birth')."' ";
|
||||
$sql_certify .= " , mb_sex = '".get_session('ss_cert_sex')."' ";
|
||||
$sql_certify .= " , mb_dupinfo = '".get_session('ss_cert_dupinfo')."' ";
|
||||
if($w == 'u')
|
||||
$sql_certify .= " , mb_name = '{$mb_name}' ";
|
||||
} else {
|
||||
$sql_certify .= " , mb_hp = '{$mb_hp}' ";
|
||||
$sql_certify .= " , mb_certify = '' ";
|
||||
$sql_certify .= " , mb_adult = 0 ";
|
||||
$sql_certify .= " , mb_birth = '' ";
|
||||
$sql_certify .= " , mb_sex = '' ";
|
||||
}
|
||||
} else {
|
||||
if (get_session("ss_reg_mb_name") != $mb_name || get_session("ss_reg_mb_hp") != $mb_hp) {
|
||||
$sql_certify .= " , mb_hp = '{$mb_hp}' ";
|
||||
$sql_certify .= " , mb_certify = '' ";
|
||||
$sql_certify .= " , mb_adult = 0 ";
|
||||
$sql_certify .= " , mb_birth = '' ";
|
||||
$sql_certify .= " , mb_sex = '' ";
|
||||
}
|
||||
}
|
||||
//===============================================================
|
||||
}
|
||||
// 회원정보 입력
|
||||
$sql = " insert into {$g5['member_table']}
|
||||
set mb_id = '{$mb_id}',
|
||||
@ -110,8 +161,8 @@ $sql = " insert into {$g5['member_table']}
|
||||
mb_mailling = '{$mb_mailling}',
|
||||
mb_sms = '0',
|
||||
mb_open = '{$mb_open}',
|
||||
mb_open_date = '".G5_TIME_YMD."' ";
|
||||
|
||||
mb_open_date = '".G5_TIME_YMD."'
|
||||
{$sql_certify} ";
|
||||
$result = sql_query($sql, false);
|
||||
|
||||
if($result) {
|
||||
|
||||
Reference in New Issue
Block a user