diff --git a/kngil/bbs/adm_comp copy.php b/kngil/bbs/adm_comp copy.php deleted file mode 100644 index 9e73e69..0000000 --- a/kngil/bbs/adm_comp copy.php +++ /dev/null @@ -1,261 +0,0 @@ -prepare(" - SELECT * - FROM kngil.fn_base_cd(:main_cd) - "); - $stmt->execute([ - ':main_cd' => $main_cd - ]); - - $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); - - echo json_encode([ - 'status' => 'success', - 'items' => $rows // [{id, text}] - ]); - break; - - - /* ========================= - 1. 사용자 목록 조회 - ========================= */ - case 'list': - - $schType = $_GET['sch_type'] ?? ''; - $schKeyword = $_GET['sch_keyword'] ?? ''; - $schUseYn = $_GET['sch_use_yn'] ?? ''; - - // 기본값 - $sch_id = ''; - $sch_nm = ''; - $sch_dept = ''; - - if ($schKeyword !== '') { - switch ($schType) { - case 'id': - $sch_id = $schKeyword; - break; - case 'name': - $sch_nm = $schKeyword; - break; - case 'dept': - $sch_dept = $schKeyword; - break; - - default: // 전체 - $sch_id = $schKeyword; - $sch_nm = $schKeyword; - $sch_dept = $schKeyword; - } - } - - $sql = " - SELECT * - FROM kngil.sp_users_r( - :member_id, - :user_nm, - :dept_nm, - :use_yn - ); - "; - - $stmt = $pdo->prepare($sql); - $stmt->execute([ - ':member_id' => $member_id, - ':user_nm' => $_GET['user_nm'] ?? '', - ':dept_nm' => $_GET['dept_nm'] ?? '', - ':use_yn' => $_GET['use_yn'] ?? '' - ]); - - $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); - - $i = 1; - foreach ($rows as &$r) { - $r['recid'] = $i++; - } - - echo json_encode([ - 'status' => 'success', - 'member_id' => $member_id, - 'records' => $rows - ]); - break; - - - /* ========================= - 2. 사용자 저장 - ========================= */ - case 'save': - - $inserts = $input['inserts'] ?? []; - $updates = $input['updates'] ?? []; - - if (!$inserts && !$updates) { - throw new Exception('저장할 데이터가 없습니다.'); - } - - $pdo->beginTransaction(); - - // INSERT - if ($inserts) { - $stmtI = $pdo->prepare(" - SELECT kngil.sp_users_i( - :member_id,:user_id,:user_pw,:user_nm,:dept_nm, - :posit_nm,:tel_no,:email,:auth_bc,:use_yn,:rmks,:cid - ) - "); - - foreach ($inserts as $r) { - $stmtI->execute([ - ':member_id' => $member_id, - ':user_id' => $r['user_id'], - ':user_pw' => $r['user_pw'] ?? '0000', - ':user_nm' => $r['user_nm'], - ':dept_nm' => $r['dept_nm'], - ':posit_nm' => $r['posit_nm'] ?? '', - ':tel_no' => $r['tel_no'], - ':email' => $r['email'], - ':auth_bc' => $r['auth_bc'], - ':use_yn' => $r['use_yn'], - ':rmks' => $r['rmks'] ?? '', - ':cid' => $r['cid'] ?? 'SYSTEM' - ]); - } - } - - // UPDATE - if ($updates) { - $stmtU = $pdo->prepare(" - SELECT kngil.sp_users_u( - :member_id,:user_id,:user_pw,:user_nm,:dept_nm, - :posit_nm,:tel_no,:email,:auth_bc,:use_yn,:rmks,:mid - ) - "); - - foreach ($updates as $r) { - $stmtU->execute([ - ':member_id' => $member_id, - ':user_id' => $r['user_id'], - ':user_pw' => null, - ':user_nm' => $r['user_nm'], - ':dept_nm' => $r['dept_nm'], - ':posit_nm' => $r['posit_nm'] ?? '', - ':tel_no' => $r['tel_no'], - ':email' => $r['email'], - ':auth_bc' => $r['auth_bc'], - ':use_yn' => $r['use_yn'], - ':rmks' => $r['rmks'] ?? '', - ':mid' => $r['mid'] ?? 'SYSTEM' - ]); - } - } - - $pdo->commit(); - echo json_encode(['status'=>'success']); - break; - - - - /* ========================= - 3. 사용자 삭제 (비활성) - ========================= */ - case 'delete': - - $ids = $input['ids'] ?? []; - if (!$ids) throw new Exception('삭제 대상이 없습니다.'); - - $sql = "SELECT kngil.sp_users_d(:member_id, :user_id)"; - $stmt = $pdo->prepare($sql); - - foreach ($ids as $uid) { - $stmt->execute([ - ':member_id' => $member_id, - ':user_id' => $uid - ]); - } - - echo json_encode(['status'=>'success']); - break; - /* ========================= - 4. 회원 총 구매 면적 조회 - ========================= */ - case 'total_area': - - $sql = " - SELECT COALESCE(SUM(sum_area), 0) AS total_area - FROM kngil.sp_buy_item_history_r(:member_id, '', NULL, NULL) - "; - - $stmt = $pdo->prepare($sql); - $stmt->execute([ - ':member_id' => $member_id - ]); - - $row = $stmt->fetch(PDO::FETCH_ASSOC); - - echo json_encode([ - 'status' => 'success', - 'member_id' => $member_id, - 'total_area' => (int)$row['total_area'] - ]); - break; - - default: - throw new Exception('잘못된 요청'); - } - -} catch (Exception $e) { - - if ($pdo->inTransaction()) { - $pdo->rollBack(); - } - - http_response_code(500); - echo json_encode([ - 'status' => 'error', - 'message' => $e->getMessage() - ]); -} \ No newline at end of file diff --git a/kngil/bbs/join copy.php b/kngil/bbs/join copy.php deleted file mode 100644 index d71aaad..0000000 --- a/kngil/bbs/join copy.php +++ /dev/null @@ -1,160 +0,0 @@ - false, - 'message' => '아이디 형식 오류' - ]); - exit; - } - - $stmt = $pdo->prepare(" - SELECT kngil.fn_user_id_check(:user_id) - "); - $stmt->execute([ - ':user_id' => $userId - ]); - - $result = trim($stmt->fetchColumn()); - - if (strpos($result, 'SUCCESS') === 0) { - echo json_encode([ - 'available' => true, - 'message' => '사용 가능한 아이디입니다.' - ]); - } else { - echo json_encode([ - 'available' => false, - 'message' => '이미 존재하는 아이디입니다.' - ]); - } - exit; -} - - -/* ================================================= - 1. 필수값 검증 -================================================= */ -$required = [ - 'memberType', // 회원유형 - 'userId', - 'password', - 'userName', - 'email', - 'phone' -]; - -foreach ($required as $k) { - if (empty($data[$k])) { - echo json_encode([ - 'success' => false, - 'message' => '필수 항목이 누락되었습니다.' - ]); - exit; - } -} - -/* ================================================= - 2. 회원유형 → co_bc 매핑 -================================================= */ -/* - 기업회원 : '1' - 개인회원 : '2' - → 실제 코드값은 여기서 통제 -*/ -$co_bc = ($data['memberType'] === '1') - ? 'CB100100' // 기업 - : 'CB100200'; // 개인 - -/* ================================================= - 3. 비밀번호 규칙 + 암호화 -================================================= */ -if (!preg_match('/^(?=.*[A-Za-z])(?=.*\d)(?=.*[!@#$%^&*]).{12,}$/', $data['password'])) { - echo json_encode([ - 'success' => false, - 'message' => '비밀번호 규칙이 올바르지 않습니다.' - ]); - exit; -} - -$hashedPw = password_hash($data['password'], PASSWORD_DEFAULT); - -/* ================================================= - 4. 이메일 형식 -================================================= */ -if (!filter_var($data['email'], FILTER_VALIDATE_EMAIL)) { - echo json_encode([ - 'success' => false, - 'message' => '이메일 형식 오류' - ]); - exit; -} - -/* ================================================= - 5. 프로시저 호출 -================================================= */ -try { - - $stmt = $pdo->prepare(" - SELECT kngil.sp_member_i( - :p_co_bc, - :p_member_id, - :p_user_pw, - :p_member_nm, - :p_email, - :p_tel_no, - :p_co_nm, - :p_dept_nm, - :p_cid - ) AS result - "); - - $stmt->execute([ - ':p_co_bc' => $co_bc, - ':p_member_id' => $data['userId'], - ':p_user_pw' => $hashedPw, - ':p_member_nm' => $data['userName'], - ':p_email' => $data['email'], - ':p_tel_no' => $data['phone'], - ':p_co_nm' => $data['company'] ?? null, - ':p_dept_nm' => $data['department'] ?? null, - ':p_cid' => $data['userId'] - ]); - - $result = $stmt->fetchColumn(); - - if ($result === 'SUCCESS') { - echo json_encode([ - 'success' => true - ]); - } else { - echo json_encode([ - 'success' => false, - 'message' => $result - ]); - } - -} catch (Exception $e) { - echo json_encode([ - 'success' => false, - 'message' => '서버 오류' - ]); -} - -echo json_encode([ - 'success' => false, - 'message' => 'Invalid action' -]); -exit; \ No newline at end of file diff --git a/kngil/bbs/login_sms copy.php b/kngil/bbs/login_sms copy.php deleted file mode 100644 index 5c3292e..0000000 --- a/kngil/bbs/login_sms copy.php +++ /dev/null @@ -1,179 +0,0 @@ -'HS256','typ'=>'JWT']; - - $segments = []; - $segments[] = base64url_encode(json_encode($header)); - $segments[] = base64url_encode(json_encode($payload)); - - $signing_input = implode('.', $segments); - $signature = hash_hmac('sha256', $signing_input, $secret, true); - - $segments[] = base64url_encode($signature); - - return implode('.', $segments); -} - -/* ========================= - cURL 요청 함수 -========================= */ -function curl_json($url, $method='GET', $headers=[], $body=null) { - $ch = curl_init($url); - - curl_setopt_array($ch, [ - CURLOPT_RETURNTRANSFER => true, - CURLOPT_CUSTOMREQUEST => $method, - CURLOPT_HTTPHEADER => $headers, - CURLOPT_POSTFIELDS => $body, - CURLOPT_TIMEOUT => 10 - ]); - - $response = curl_exec($ch); - $err = curl_error($ch); - $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); - - curl_close($ch); - - if ($err) { - throw new Exception($err); - } - - return [$code, $response]; -} - -/* ========================= - MODE 분기 -========================= */ -$mode = $_GET['mode'] ?? 'request'; - -try { - - /* ========================= - 1️⃣ 매직링크 발급 요청 - ========================= */ - if ($mode === 'request') { - - // JWT payload (3분 유효) - $payload = [ - 'system' => $SYSTEM, - 'iat' => time(), - 'exp' => time() + 180 - ]; - - $jwt = create_jwt($payload, $SECRET_KEY); - - [$code, $res] = curl_json( - $AUTH_SERVER.'/auth/sentinel', - 'POST', - [ - 'Authorization: Bearer '.$jwt, - 'Content-Type: application/json' - ], - json_encode([ - 'phoneNumber' => $PHONE - ]) - ); - - echo json_encode([ - 'step' => 'sentinel_request', - 'http_code' => $code, - 'response' => json_decode($res, true) - ], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); - exit; - } - - /* ========================= - 2️⃣ 매직링크 상태 확인 - ========================= */ - if ($mode === 'status') { - - $token = $_GET['token'] ?? ''; - if (!$token) { - throw new Exception('token 필요'); - } - - $payload = [ - 'system' => $SYSTEM, - 'iat' => time(), - 'exp' => time() + 180 - ]; - - $jwt = create_jwt($payload, $SECRET_KEY); - - [$code, $res] = curl_json( - $AUTH_SERVER.'/auth/status?token='.$token, - 'GET', - [ - 'Authorization: Bearer '.$jwt - ] - ); - - $data = json_decode($res, true); - - // 🔴 여기부터가 "로그인 처리" - if (!empty($data['loggedIn'])) { - - $stmt = $pdo->prepare(" - SELECT member_id, user_id, user_nm, auth_bc - FROM kngil.users - WHERE REPLACE(tel_no, '-', '') = :phone - AND use_yn = 'Y' - LIMIT 1 - "); - $stmt->execute([':phone' => $PHONE]); - $user = $stmt->fetch(PDO::FETCH_ASSOC); - - if (!$user) { - throw new Exception('해당 번호로 등록된 사용자 없음'); - } - - $_SESSION['login'] = [ - 'member_id' => $user['member_id'], - 'user_id' => $user['user_id'], - 'user_nm' => $user['user_nm'], - 'auth_bc' => $user['auth_bc'] - ]; - - echo json_encode([ - 'status' => 'success', - 'message' => '자동 로그인 완료' - ]); - exit; - } - - echo json_encode([ - 'status' => 'pending' - ]); - exit; - } - -} catch (Exception $e) { - echo json_encode([ - 'error' => true, - 'message' => $e->getMessage() - ], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); -} diff --git a/kngil/skin/adm.php b/kngil/skin/adm.php index 6404ce9..08397cf 100644 --- a/kngil/skin/adm.php +++ b/kngil/skin/adm.php @@ -1,4 +1,6 @@ diff --git a/kngil/skin/adm_comp.php b/kngil/skin/adm_comp.php index 980b6f5..71db16a 100644 --- a/kngil/skin/adm_comp.php +++ b/kngil/skin/adm_comp.php @@ -1,4 +1,6 @@ diff --git a/kngil/skin/adm_comp1.php b/kngil/skin/adm_comp1.php index d2f9ead..d3f5a30 100644 --- a/kngil/skin/adm_comp1.php +++ b/kngil/skin/adm_comp1.php @@ -1,4 +1,6 @@ diff --git a/kngil/skin/analysis.php b/kngil/skin/analysis.php index f82abc4..313bf4d 100644 --- a/kngil/skin/analysis.php +++ b/kngil/skin/analysis.php @@ -1,3 +1,7 @@ +
diff --git a/kngil/skin/buy.php b/kngil/skin/buy.php index 8d60e9d..2595261 100644 --- a/kngil/skin/buy.php +++ b/kngil/skin/buy.php @@ -1,3 +1,7 @@ + diff --git a/kngil/skin/faq_list.php b/kngil/skin/faq_list.php index ee1c7c2..646447d 100644 --- a/kngil/skin/faq_list.php +++ b/kngil/skin/faq_list.php @@ -1,3 +1,7 @@ + diff --git a/kngil/skin/pop_agreement.php b/kngil/skin/pop_agreement.php index 62e9478..70658e2 100644 --- a/kngil/skin/pop_agreement.php +++ b/kngil/skin/pop_agreement.php @@ -1,3 +1,7 @@ +