prepare( 'SELECT member_id, sys_comp_code, name, rank_name, intro_flag FROM edu_users WHERE member_id = ? AND sys_comp_code = ? LIMIT 1' ); $stmt = $pdo->prepare( " SELECT u.member_id, u.sys_comp_code, u.name, u.rank_name, u.intro_flag, ec.code, ec.code_name as comp_name FROM edu_users u LEFT JOIN ( SELECT code,code_name FROM edu_codes WHERE group_code = 'CO100' ) ec ON ec.code = u.belong_comp WHERE u.member_id = ? AND u.sys_comp_code = ? LIMIT 1 " ); $stmt->execute([$memberId, $sysCompCode]); $user = $stmt->fetch(PDO::FETCH_ASSOC); // 사용자가 없으면 로그인 페이지로 이동 if (!$user) { header("Location: /skin/login.php"); exit; } // --- [세션 초기화 단계] --- // 새로운 사용자의 정보를 담기 전에 기존 세션 변수를 모두 제거합니다. session_unset(); // 보안을 위해 세션 ID를 새로 발급합니다. (기존 세션 데이터 삭제 포함) session_regenerate_id(true); // ------------------------- // 3. 변수 정리 및 세션 저장 (요청하신 규칙 엄격 적용) $U_member_id = $user['member_id']; $U_sys_comp_code = $user['sys_comp_code']; $U_name = $user['name']; $U_rank_name = $user['rank_name']; $U_comp_name = $user['comp_name']; $U_intro_flag = (string)$user['intro_flag']; // '0' 또는 '1' $_SESSION['user_id'] = $U_member_id; $_SESSION['ss_mb_id'] = $U_member_id; $_SESSION['comp_name'] = $U_comp_name; $_SESSION['sys_comp_code'] = $U_sys_comp_code; $_SESSION['company'] = $U_sys_comp_code; $_SESSION['member_name'] = $U_name; $_SESSION['name'] = $U_name; $_SESSION['rank_name'] = $U_rank_name; $_SESSION['intro_flag'] = $U_intro_flag; // 4. 리다이렉트 분기 및 DB 업데이트 if ($U_intro_flag === '1') { // 읽음 완료 상태: 메인으로 이동 header("Location: /skin/index.php"); exit; } else { // 읽지 않음(0) 상태: DB 업데이트 후 인트로로 이동 $stmtUpdate = $pdo->prepare( 'UPDATE edu_users SET intro_flag = "1" WHERE member_id = ? AND sys_comp_code = ? AND intro_flag = "0"' ); $stmtUpdate->execute([$U_member_id, $U_sys_comp_code]); // 업데이트 성공 후 세션 동기화 (인트로 이동 직전) $_SESSION['intro_flag'] = '1'; header("Location: /skin/intro.php"); exit; } } catch (Exception $e) { error_log("Entry Error: " . $e->getMessage()); exit('시스템 오류가 발생했습니다. 잠시 후 다시 시도해주세요.'); }