[ Mini Kiebo ]
Server: Windows NT AKFAR_SERVER 10.0 build 26200 (Windows 10) AMD64
Path:
D:
/
xampp
/
htdocs
/
campus_repo
/
public
/
[
Home
]
File: upload.php
<?php if (session_status() === PHP_SESSION_NONE) { session_start(); } require_once __DIR__ . '/../config/config.php'; require_once __DIR__ . '/../src/Utils.php'; require_once __DIR__ . '/../src/Database.php'; require_once __DIR__ . '/../src/auth.php'; requireLogin(); // Redirect jika belum login if (!isset($_SESSION['user'])) { header("Location: login.php?msg=login_required"); exit; } $pdo = Database::getConnection(); $message = ''; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $title = trim($_POST['title']); $authors = trim($_POST['authors']); $abstract = trim($_POST['abstract']); $keywords = trim($_POST['keywords']); $year = intval($_POST['year']); $type = $_POST['type']; $subject_area = $_POST['subject_area']; // Pastikan folder uploads ada $uploadDir = __DIR__ . "/uploads/"; if (!is_dir($uploadDir)) { mkdir($uploadDir, 0777, true); } if (isset($_FILES['file']) && $_FILES['file']['error'] === UPLOAD_ERR_OK) { $filename = basename($_FILES['file']['name']); $fileType = strtolower(pathinfo($filename, PATHINFO_EXTENSION)); // Validasi tipe file $allowedTypes = ['pdf', 'doc', 'docx']; if (!in_array($fileType, $allowedTypes)) { $message = "❌ Tipe file tidak diizinkan. Hanya PDF, DOC, atau DOCX."; } else { $target = $uploadDir . $filename; if (move_uploaded_file($_FILES['file']['tmp_name'], $target)) { $stmt = $pdo->prepare("INSERT INTO documents (title, authors, abstract, keywords, year, type, subject_area, file_path, mime_type, size_bytes, uploader_id, status) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)"); $ok = $stmt->execute([ $title, $authors, $abstract, $keywords, $year, $type, $subject_area, $filename, $_FILES['file']['type'], $_FILES['file']['size'], $_SESSION['user']['id'], 'submitted' ]); if ($ok) { $message = "✅ Dokumen berhasil diunggah."; } else { $message = "❌ Terjadi kesalahan saat menyimpan dokumen."; } } else { $message = "❌ Gagal memindahkan file ke folder uploads."; } } } else { $message = "❌ File belum dipilih atau terjadi error."; } } ?> <?php include 'header.php'; ?> <h2>Unggah Dokumen</h2> <?php if ($message): ?> <div style="color:green;"><?= Utils::sanitize($message) ?></div> <?php endif; ?> <form method="post" enctype="multipart/form-data"> <label>Judul:</label> <input type="text" name="title" required> <label>Penulis:</label> <input type="text" name="authors" required> <label>Abstrak:</label> <textarea name="abstract"></textarea> <label>Kata Kunci:</label> <input type="text" name="keywords"> <label>Tahun:</label> <input type="number" name="year" min="1900" max="2100" required> <label>Tipe Dokumen:</label> <select name="type"> <option value="article">Artikel</option> <option value="thesis">Tesis</option> <option value="report">Laporan</option> <option value="book">Buku</option> <option value="other">Lainnya</option> </select> <label>Bidang Ilmu:</label> <select name="subject_area"> <option value="Farmasi">Farmasi</option> <option value="Seni">Seni</option> <option value="Teknologi">Teknologi</option> <option value="Pendidikan">Pendidikan</option> <option value="Lainnya">Lainnya</option> </select> <label>File (PDF/DOC/DOCX):</label> <input type="file" name="file" required> <button type="submit">Unggah</button> </form> <?php include 'footer.php'; ?>