Aplikasi web sederhana berbasis PHP untuk mengunggah file sementara. Setiap file yang diunggah akan otomatis terhapus setelah periode waktu yang ditentukan (10 menit) dan dilindungi sehingga hanya pemilik file yang dapat mengaksesnya.
Gunakan dengan bijak, mohon untuk tidak spam atau DDoS. Link: Web Demo
| Halaman Login | Halaman Registrasi |
|
|
| Dasbor Utama Pengguna | |
|
|
- Sistem Multi-User: Pengguna dapat mendaftar dan login ke akun pribadi mereka.
- Upload Multi-File: Mendukung pengunggahan beberapa file sekaligus dengan fungsionalitas drag-and-drop.
- Keamanan Akses File: File yang diunggah hanya dapat diakses atau diunduh oleh pengguna yang mengunggahnya. Akses melalui URL langsung diblokir.
- Kedaluwarsa Otomatis: Setiap file akan secara otomatis dihapus dari server setelah 10 menit menggunakan Cron Job.
- Hapus Manual: Pengguna dapat menghapus file mereka sendiri sebelum waktu kedaluwarsa habis.
- Keamanan Formulir: Dilengkapi dengan Google reCAPTCHA v2 pada halaman registrasi dan form upload untuk mencegah spam dari bot.
- Tata Letak Responsif: Tampilan modern dengan dua kolom pada layar desktop yang akan otomatis menjadi satu kolom pada perangkat mobile.
- Pola Desain Modern: Mengimplementasikan pola Post-Redirect-Get (PRG) untuk mencegah unggahan ganda saat halaman di-refresh.
- Backend: PHP 8.x
- Web Server: Nginx
- Database: MySQL
- Frontend: HTML5, CSS3, Vanilla JavaScript
Berikut adalah langkah-langkah untuk menjalankan proyek ini di server Anda sendiri (misalnya, VPS dengan Ubuntu/Debian).
- Server dengan Nginx, PHP (v7.4+), dan MySQL/MariaDB.
- Ekstensi PHP yang dibutuhkan:
php-mysql,php-gd,php-fileinfo. - Akses ke terminal/SSH.
- Kunci API dari Google reCAPTCHA.
Clone repositori ini ke dalam direktori web Anda.
git clone https://github.com/gianabif14/web-temporary-files
cd web-temporary-filesBuat database dan user baru di MySQL.
-- Masuk ke MySQL sebagai root
mysql -u root -p
-- Jalankan perintah berikut
CREATE DATABASE (NAMA_DATABASE);
USE (NAMA_DATABASE);
-- Buat tabel users
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password_hash VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Buat tabel files
CREATE TABLE files (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
unique_name VARCHAR(255) NOT NULL,
original_name VARCHAR(255) NOT NULL,
upload_time INT UNSIGNED NOT NULL,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
EXIT;Buka file config.php dan sesuaikan isinya dengan informasi database dan kunci reCAPTCHA Anda. Dapatkan kunci reCAPTCHA dari Google reCAPTCHA Admin Console.
// config.php
// Ganti password database sesuai yang Anda buat
define('DB_PASS', 'PASSWORD_RAHASIA_ANDA');
// Masukkan kunci Google reCAPTCHA Anda di sini
define('RECAPTCHA_SITE_KEY', 'KUNCI_SITUS_RECAPTCHA_ANDA');
define('RECAPTCHA_SECRET_KEY', 'KUNCI_RAHASIA_RECAPTCHA_ANDA');Konfigurasikan Nginx untuk melayani situs Anda dan mengamankan folder uploads. Buat atau ubah file konfigurasi server block Anda.
# Contoh: /etc/nginx/sites-available/domain-anda.conf
server {
listen 80;
listen 443 ssl http2; # Aktifkan jika Anda menggunakan SSL
server_name domain-anda.com;
root /var/www/html/web-temporary-files; # Sesuaikan dengan path Anda
index index.php index.html;
# Blokir akses langsung ke folder uploads untuk keamanan
location /uploads/ {
deny all;
return 404;
}
# Aturan untuk memproses file PHP
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock; # Sesuaikan dengan versi PHP Anda
}
# Aturan routing umum
location / {
try_files $uri $uri/ /index.php?$query_string;
}
}Skrip cleanup.php harus dijalankan secara berkala untuk menghapus file yang kedaluwarsa.
- Buka editor crontab:
crontab -e
- Tambahkan baris berikut di paling bawah untuk menjalankannya setiap menit:
* * * * * /usr/bin/php /web-temporary-files/cleanup.php >> /dev/null 2>&1 # Sesuaikan dengan path Anda
Skrip cleanup.php harus dijalankan secara berkala untuk menghapus file yang kedaluwarsa.
- Buka editor crontab:
crontab -e
- Tambahkan baris berikut di paling bawah untuk menjalankannya setiap menit:
* * * * * /usr/bin/php /web-temporary-files/cleanup.php >> /dev/null 2>&1 # Sesuaikan dengan path Anda
Penting: Pastikan path di atas adalah path yang sesuai ke file cleanup.php di server Anda.
Pastikan server web (biasanya user www-data) memiliki izin untuk menulis ke folder uploads.
sudo chown -R www-data:www-data /web-temporary-files # Sesuaikan dengan path Anda
sudo chmod -R 755 /web-temporary-files # Sesuaikan dengan path AndaSetelah semua langkah ini, aplikasi Anda seharusnya sudah berjalan dengan baik.
Proyek ini dilisensikan di bawah GNU General Public License v3.0. Lihat file LICENSE untuk detail lengkap.
Dibuat oleh @gianabif14.
Beberapa bagian dari pemecahan masalah, pembuatan README.md, dan penyempurnaan dibantu oleh Google Gemini.


