diff --git a/engine/app/controller/UploadController.php b/engine/app/controller/UploadController.php index 4cb8a3a..bd7faa1 100644 --- a/engine/app/controller/UploadController.php +++ b/engine/app/controller/UploadController.php @@ -1,35 +1,96 @@ $portial], 'layout_admin.php')); } else { header("Location:http://localhost:8000/login"); - }; + } } public function actionAddfile() { - $uploaddir = 'C:\\Lerning\\itmo-php-course\\engine\\uploads\\'; - $uploadfile = $uploaddir . basename($_FILES['userfile']['name']); - - echo '
'; - if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { - echo "Файл не содержит ошибок и успешно загрузился на сервер.\n"; - } else { - echo "Возможная атака на сервер через загрузку файла!\n"; + try { + $link = Db::connection(CONFIG_DB); + } catch (\Doctrine\DBAL\Exception $e) { + die("Ошибка подключения к базе данных: " . $e->getMessage()); } + + $uploaddir = 'C:\\Lerning\\lerning-php\\itmo-php-course\\engine\\uploads\\'; + $fileName = basename($_FILES['userfile']['name']); + $uploadfile = $uploaddir . $fileName; + + $fileMimeType = mime_content_type($_FILES['userfile']['tmp_name']); + $fileExtension = strtolower(pathinfo($fileName, PATHINFO_EXTENSION)); + + $allowedMimeTypes = ['audio/mpeg']; + $allowedExtensions = ['mp3']; + + $maxFileSize = 11 * 1024 * 1024; + + if ( + in_array($fileMimeType, $allowedMimeTypes) && + in_array($fileExtension, $allowedExtensions) && + $_FILES['userfile']['size'] <= $maxFileSize + ) { + // Проверка наличия файла в базе данных + try { + $sql = "SELECT * FROM files WHERE file_name = :file_name"; + $stmt = $link->prepare($sql); + $stmt->bindValue('file_name', $fileName); + $result = $stmt->executeQuery(); + $existingFile = $result->fetchAssociative(); + + if ($existingFile) { + $message = "Файл уже загружен. Ссылка для скачивания: {$existingFile['download_link']}"; + $status = 'info'; + } else { + // Проверка наличия файла в директории + if (file_exists($uploadfile)) { + $message = "Файл с таким именем уже существует на сервере."; + $status = 'info'; + } else { + // Перемещение загруженного файла в директорию + if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { + // Генерация ссылки для скачивания + $downloadLink = './uploads/' . $fileName; + + // Сохранение ссылки в базу данных + try { + $link->insert('files', [ + 'file_name' => $fileName, + 'download_link' => $downloadLink, + ]); + $message = "Файл успешно загружен. Ссылка для скачивания: $downloadLink"; + $status = 'success'; + } catch (\Doctrine\DBAL\Exception $e) { + $message = "Ошибка при сохранении в базу данных: " . $e->getMessage(); + $status = 'error'; + } + } else { + $message = "Ошибка при загрузке файла."; + $status = 'error'; + } + } + } + } catch (\Doctrine\DBAL\Exception $e) { + echo "Ошибка при проверке файла в базе данных: " . $e->getMessage(); + return; + } + } else { + $message = "Ошибка: разрешены только MP3-файлы размером до 10 MB."; + $status = 'error'; + } + // $rendMessage = (View::render([], 'message_tpl.php')); + // echo (View::render(['message' => $rendMessage], 'layout_admin.php')); } -} +} \ No newline at end of file diff --git a/engine/app/model/MusicModel.php b/engine/app/model/MusicModel.php index 7c0debe..60e2fec 100644 --- a/engine/app/model/MusicModel.php +++ b/engine/app/model/MusicModel.php @@ -2,18 +2,18 @@ namespace App\Model; -use Shalex\Engine\DataBase; +// use Shalex\Engine\DataBase; use Shalex\Engine\Db; class MusicModel { static function getData() { - $link = Db::connection(CONFIG_DB); - $query = "SELECT * FROM track WHERE device_id = 3"; - $result = $link->executeQuery($query); - $composer = $result->fetchAssociative(); - var_dump($composer['composer_name']); + // $link = Db::connection(CONFIG_DB); + // $query = "SELECT * FROM track WHERE device_id = 4"; + // $result = $link->executeQuery($query); + // $composer = $result->fetchAssociative(); + // var_dump($composer['composer_name']); $box = []; if ($handle = opendir('./uploads')) { while (false !== ($entry = readdir($handle))) { diff --git a/engine/app/template/index_tpl.php b/engine/app/template/index_tpl.php index 34f0e8c..d28b564 100644 --- a/engine/app/template/index_tpl.php +++ b/engine/app/template/index_tpl.php @@ -12,22 +12,28 @@ -