window.parent.CKEDITOR.tools.callFunction($ckFuncNum, '$url', '$message');"; } else { // TinyMCE / стандартный JSON-ответ header('Content-Type: application/json'); if ($success) { echo json_encode(array('location' => $url)); } else { echo json_encode(array('error' => $message)); } } exit(); } if (!$_SESSION['superadmin']) { respond(false, 'Доступ запрещён'); } // CKEditor отправляет файл в поле "upload", TinyMCE — в "file" $file = null; if (isset($_FILES['upload'])) $file = $_FILES['upload']; elseif (isset($_FILES['file'])) $file = $_FILES['file']; if (!$file || $file['error'] !== UPLOAD_ERR_OK) { respond(false, 'Ошибка загрузки файла'); } $maxSize = 5 * 1024 * 1024; // 5 MB if ($file['size'] > $maxSize) { respond(false, 'Файл слишком большой (макс. 5 MB)'); } $ext = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION)); if (!in_array($ext, array('jpg', 'jpeg', 'png', 'webp', 'gif'))) { respond(false, 'Недопустимый тип файла'); } if (@getimagesize($file['tmp_name']) === false) { respond(false, 'Файл не является изображением'); } $dir = $_SERVER['DOCUMENT_ROOT'] . '/images/articles/'; if (!is_dir($dir)) mkdir($dir, 0755, true); $filename = 'art-upload-' . time() . '-' . mt_rand(1000, 9999) . '.' . $ext; $dest = $dir . $filename; if (!move_uploaded_file($file['tmp_name'], $dest)) { respond(false, 'Не удалось сохранить файл'); } respond(true, '', '/images/articles/' . $filename);