connect_error) { // 포트 3306 기본값으로 재시도 $conn = @new mysqli('localhost', $db_user, $db_pass, $db_name); if ($conn->connect_error) { return null; } } $conn->set_charset("utf8mb4"); return $conn; } // API 요청 처리 (AJAX) if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action'])) { header('Content-Type: application/json; charset=utf-8'); $action = $_POST['action']; // 로그인 처리 (최우선 순위 배치) if ($action === 'login') { $id = trim($_POST['id'] ?? ''); $pw = $_POST['pw'] ?? ''; // 아이디와 비밀번호가 일치하면 DB 연결 여부와 상관없이 무조건 로그인 성공 처리 if ($id === 'hahane' && $pw === 'hahane1') { $_SESSION['logged_in'] = true; $_SESSION['user_id'] = $id; echo json_encode(['success' => true]); exit; } echo json_encode(['success' => false, 'message' => '아이디 또는 비밀번호가 일치하지 않습니다.']); exit; } // 로그인 체크 필수 if (!isset($_SESSION['logged_in']) || !$_SESSION['logged_in']) { echo json_encode(['success' => false, 'message' => '인증이 필요합니다.']); exit; } // 데이터 조회 if ($action === 'get_records') { $conn = get_db(); $rows = []; if ($conn) { $res = $conn->query("SELECT * FROM reef_records ORDER BY date ASC"); if ($res) { while ($r = $res->fetch_assoc()) { $rows[] = [ 'date' => $r['date'], 'dkh' => $r['dkh'] !== null ? (float)$r['dkh'] : null, 'no3' => $r['no3'] !== null ? (float)$r['no3'] : null, 'po4' => $r['po4'] !== null ? (float)$r['po4'] : null, 'temp' => $r['temp'] !== null ? (float)$r['temp'] : null, 'ca' => $r['ca'] !== null ? (int)$r['ca'] : null, 'mg' => $r['mg'] !== null ? (int)$r['mg'] : null, 'rec' => $r['rec'] ?? '' ]; } } $conn->close(); } echo json_encode(['success' => true, 'data' => $rows]); exit; } // 데이터 저장/수정 if ($action === 'save_record') { $date = $_POST['date'] ?? ''; if (!preg_match('/^\d{4}-\d{2}-\d{2}$/', $date)) { echo json_encode(['success' => false, 'message' => '올바른 날짜가 아닙니다.']); exit; } $dkh = $_POST['dkh'] !== '' ? $_POST['dkh'] : null; $no3 = $_POST['no3'] !== '' ? $_POST['no3'] : null; $po4 = $_POST['po4'] !== '' ? $_POST['po4'] : null; $temp = $_POST['temp'] !== '' ? $_POST['temp'] : null; $ca = $_POST['ca'] !== '' ? $_POST['ca'] : null; $mg = $_POST['mg'] !== '' ? $_POST['mg'] : null; $rec = $_POST['rec'] ?? ''; $conn = get_db(); if (!$conn) { echo json_encode(['success' => false, 'message' => '데이터베이스 연결 실패 (비밀번호나 DB 설정을 확인하세요)']); exit; } $stmt = $conn->prepare("INSERT INTO reef_records (date, dkh, no3, po4, temp, ca, mg, rec) VALUES (?, ?, ?, ?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE dkh=?, no3=?, po4=?, temp=?, ca=?, mg=?, rec=?"); $stmt->bind_param("sdddddissdddddis", $date, $dkh, $no3, $po4, $temp, $ca, $mg, $rec, $dkh, $no3, $po4, $temp, $ca, $mg, $rec); if ($stmt->execute()) { echo json_encode(['success' => true]); } else { echo json_encode(['success' => false, 'message' => '저장 실패: ' . $conn->error]); } $stmt->close(); $conn->close(); exit; } // 데이터 삭제 if ($action === 'delete_record') { $date = $_POST['date'] ?? ''; $conn = get_db(); if ($conn) { $stmt = $conn->prepare("DELETE FROM reef_records WHERE date = ?"); $stmt->bind_param("s", $date); $stmt->execute(); $stmt->close(); $conn->close(); } echo json_encode(['success' => true]); exit; } } $is_logged_in = isset($_SESSION['logged_in']) && $_SESSION['logged_in'] ? 'true' : 'false'; ?> 해수어항 수질 기록 (서버 연동)

해수어항 수질 기록

로그인하여 기록을 확인하세요.