초기 커밋: 5130 레거시 시스템
- URL 하드코딩 → .env APP_URL 기반 동적 URL로 변경 - DB 연결 하드코딩 → .env 기반으로 변경 - MySQL strict mode DATE 오류 수정
This commit is contained in:
103
shutterbox/put_shutterbox_image.php
Normal file
103
shutterbox/put_shutterbox_image.php
Normal file
@@ -0,0 +1,103 @@
|
||||
<?php
|
||||
// put_shutterbox_image.php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/session.php");
|
||||
if (!isset($_SESSION["level"]) || $_SESSION["level"] > 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' ? '기존 데이터가 업데이트되었습니다.' : '새 데이터가 추가되었습니다.'
|
||||
]);
|
||||
Reference in New Issue
Block a user