set_charset("utf8mb4"); if ($mysqli->connect_error) { echo json_encode(['success' => false, 'message' => '데이터베이스 연결 실패']); exit; } function getUserIp() { if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ipList = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); return trim(end($ipList)); } return $_SERVER['REMOTE_ADDR'] ?? 'UNKNOWN'; } function isIpAllowed($mysqli, $ip) { $query = "SELECT COUNT(*) AS cnt FROM ap_accessible_iplist WHERE ip='$ip' AND allow=true"; $result = $mysqli->query($query); $row = $result->fetch_assoc(); return $row['cnt'] > 0; } function logAccessAttempt($mysqli, $ip, $success) { $class = '보안'; $subclass = '접근 시도'; $details = $success ? '접근 시도 성공: 해당 아이피가 화이트리스트에 속합니다.' : '접근 시도 실패: 해당 아이피가 화이트리스트에 없습니다.'; $ip = $mysqli->real_escape_string($ip); $query = "INSERT INTO ap_access_log (class, subclass, details, ip, dt) VALUES ('$class','$subclass','$details','$ip',NOW())"; $mysqli->query($query); } $userIp = getUserIp(); if (!isIpAllowed($mysqli, $userIp)) { logAccessAttempt($mysqli, $userIp, false); echo json_encode(['success' => false, 'message' => '액세스 권한이 없습니다.']); exit; } logAccessAttempt($mysqli, $userIp, true); session_start(); if (isset($_SESSION['is_admin_logged_in']) && $_SESSION['is_admin_logged_in'] === true) { header("Location: /dashboard"); exit; } if ($_SERVER['REQUEST_METHOD'] === 'POST') { $password = $_POST['password'] ?? ''; if ($password === '$h0pP!n9M3cc@') { $_SESSION['is_admin_logged_in'] = true; header("Location: /dashboard"); exit; } else { $error = "비밀번호가 잘못되었습니다."; } } ?> MECCA 관리자 로그인

MECCA 관리자 로그인