* * * * */ declare(strict_types=1); if (session_status() === PHP_SESSION_NONE) { session_start(); } if ($_SERVER['REQUEST_METHOD'] !== 'POST') { http_response_code(405); exit('허용되지 않는 요청 방식입니다.'); } $memberId = trim((string)($_POST['member_id'] ?? '')); $sysCompCode = trim((string)($_POST['sys_comp_code'] ?? '')); // 테스트 토글: 아래 true 라인을 주석 해제하면 intro_flag와 무관하게 index.php로 진입 // $forceIndexRedirectForTest = false; $forceIndexRedirectForTest = true; // 테스트 토글: intro_flag 자동 업데이트(0->1) 실행 여부 $enableIntroFlagAutoUpdate = true; // $enableIntroFlagAutoUpdate = false; if ($memberId === '' || $sysCompCode === '') { http_response_code(400); exit('필수 파라미터가 누락되었습니다.'); } require_once __DIR__ . '/db_conn.php'; try { $pdo = db_conn(); // [1] 사용자 조회 $stmt = $pdo->prepare( 'SELECT name, rank_name, intro_flag FROM edu_users WHERE member_id = ? AND sys_comp_code = ? LIMIT 1' ); $stmt->execute([$memberId, $sysCompCode]); $user = $stmt->fetch(PDO::FETCH_ASSOC); // [2] 신규 사용자 자동 등록 // if (!$user) { // // 인트라넷에서 이름을 안 보내줄 경우를 대비한 기본값 // $newName = trim((string)($_POST['name'] ?? '신규사용자')); // $newRank = trim((string)($_POST['rank_name'] ?? '사원')); // $ins = $pdo->prepare( // 'INSERT INTO edu_users (member_id, sys_comp_code, name, rank_name, intro_flag, created_at, is_active) // VALUES (?, ?, ?, ?, "0", NOW(), "Y")' // ); // $ins->execute([$memberId, $sysCompCode, $newName, $newRank]); // $user = ['name' => $newName, 'rank_name' => $newRank, 'intro_flag' => '0']; // } // [3] 세션 저장 (통합 및 정리) // 여러 시스템 호환을 위해 필요한 키값을 모두 채워주되, 이름은 'member_name'으로 통일하는 것이 좋습니다. $_SESSION['member_id'] = $memberId; $_SESSION['user_id'] = $memberId; $_SESSION['ss_mb_id'] = $memberId; $_SESSION['sys_comp_code'] = $sysCompCode; $_SESSION['company'] = $sysCompCode; $_SESSION['member_name'] = $user['name']; // 인트로에서 쓸 변수 $_SESSION['name'] = $user['name']; // 일반 페이지용 $_SESSION['rank_name'] = $user['rank_name']; // 직책 // 세션 보안 강화 session_regenerate_id(true); // [4] 리다이렉트 $introFlag = (string)($user['intro_flag'] ?? '0'); $redirectUrl = ($introFlag === '1') ? '/edu/skin/index.php' : '/edu/skin/intro.php'; if ($forceIndexRedirectForTest) { $redirectUrl = '/edu/skin/index.php'; } // index.php 진입 시 intro_flag가 0이면 자동으로 1로 승격 (토글 가능) if ($enableIntroFlagAutoUpdate && $redirectUrl === '/edu/skin/index.php' && $introFlag === '0') { $stmtUpdateIntroFlag = $pdo->prepare( 'UPDATE edu_users SET intro_flag = ? WHERE member_id = ? AND sys_comp_code = ? AND intro_flag = 0' ); $stmtUpdateIntroFlag->execute(['1', $memberId, $sysCompCode]); $introFlag = '1'; } header("Location: $redirectUrl"); exit; } catch (Exception $e) { exit('오류: ' . $e->getMessage()); } // function goToEdu(memberId, sysCompCode) { // var form = document.createElement('form'); // form.method = 'POST'; // form.action = 'https://baroncs.co.kr/edu/bbs/entry.php'; // var inputId = document.createElement('input'); // inputId.type = 'hidden'; // inputId.name = 'member_id'; // inputId.value = memberId; // var inputComp = document.createElement('input'); // inputComp.type = 'hidden'; // inputComp.name = 'sys_comp_code'; // inputComp.value = sysCompCode; // form.appendChild(inputId); // form.appendChild(inputComp); // document.body.appendChild(form); // form.submit(); // } // 배움터