5) { sleep(1); header("HTTP/1.1 403 Forbidden"); exit; } $jsonFile = $_SERVER['DOCUMENT_ROOT'] . '/shutterbox/shutterbox.json'; // POST 필드 $box_width = trim($_POST['box_width'] ?? ''); $box_height = trim($_POST['box_height'] ?? ''); $exit_direction = trim($_POST['exit_direction'] ?? ''); $rail_width = trim($_POST['rail_width'] ?? ''); $front_bottom_width= trim($_POST['front_bottom_width']?? ''); $search_keyword = trim($_POST['search_keyword'] ?? ''); $index = isset($_POST['index']) ? intval($_POST['index']) : null; // JSON 읽기 $shutterboxData = []; if (file_exists($jsonFile)) { $json = file_get_contents($jsonFile); $shutterboxData = json_decode($json, true) ?: []; } // 이미지 업로드 $imagePath = ''; $uploadDir = $_SERVER['DOCUMENT_ROOT'] . '/shutterbox/images/'; if (!file_exists($uploadDir)) mkdir($uploadDir, 0777, true); if (isset($_FILES['upfile']) && $_FILES['upfile']['error'] === UPLOAD_ERR_OK) { $orig = $_FILES['upfile']['name']; $tmp = $_FILES['upfile']['tmp_name']; $info = pathinfo($orig); $name = preg_replace('/[^A-Za-z0-9_\-]/', '_', $info['filename']); $new = date("Y_m_d_H_i_s") . "_{$name}" . (!empty($info['extension']) ? ".{$info['extension']}" : ''); $dest = $uploadDir . $new; if (!move_uploaded_file($tmp, $dest)) { echo json_encode(['error' => '파일 업로드 실패']); exit; } $imagePath = '/shutterbox/images/' . $new; } else { echo json_encode(['error' => '업로드된 이미지가 없습니다']); exit; } // 새 항목 배열 $newItem = [ 'box_width' => $box_width, 'box_height' => $box_height, 'exit_direction' => $exit_direction, 'rail_width' => $rail_width, 'front_bottom_width'=> $front_bottom_width, 'search_keyword' => $search_keyword, 'image' => $imagePath ]; // 같은 조건의 데이터가 있는지 확인하고 덮어쓰기 또는 신규 추가 $foundIndex = null; // 기존 데이터에서 같은 조건의 항목 찾기 foreach ($shutterboxData as $idx => $item) { if ($item['box_width'] === $box_width && $item['box_height'] === $box_height && $item['exit_direction'] === $exit_direction && $item['rail_width'] === $rail_width && $item['front_bottom_width'] === $front_bottom_width && $item['search_keyword'] === $search_keyword) { $foundIndex = $idx; break; } } // 덮어쓰기 or 신규 추가 if ($foundIndex !== null) { // 같은 조건의 데이터가 있으면 덮어쓰기 $shutterboxData[$foundIndex] = $newItem; $action = 'updated'; } else { // 같은 조건의 데이터가 없으면 새로 추가 $shutterboxData[] = $newItem; $action = 'added'; } // JSON 저장 if (false === file_put_contents( $jsonFile, json_encode($shutterboxData, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) )) { echo json_encode(['error' => 'JSON 저장 실패']); exit; } // 성공 응답 echo json_encode([ 'success' => true, 'imagePath' => $imagePath, 'action' => $action, 'message' => $action === 'updated' ? '기존 데이터가 업데이트되었습니다.' : '새 데이터가 추가되었습니다.' ]);