Memahami Struktur Files Viewer
Dokumentasi ini menjelaskan secara lengkap kode PHP yang digunakan untuk menampilkan file private secara aman, terkontrol, dan mudah dikembangkan.
Kode Lengkap
<?php
// ===============================
// PARAMETER URL
// ===============================
$group = $_GET['g'] ?? '';
$file = $_GET['f'] ?? '';
// ===============================
// PATH DASAR (FIX)
// ===============================
$basePath = __DIR__ . '/../app/shared';
// ===============================
// DEFINISI GROUP, LABEL, FILE
// ===============================
$groups = [
'shared1' => [
'label' => 'Shared 1',
'files' => [
['label' => 'Sesi 1', 'file' => '1.html'],
['label' => 'Sesi 2', 'file' => '2.html'],
['label' => 'Sesi 3', 'file' => '3.html'],
['label' => 'Sesi 4', 'file' => '4.html'],
['label' => 'Sesi 5', 'file' => '5.html'],
['label' => 'Sesi 6', 'file' => '6.html'],
['label' => 'Sesi 7', 'file' => '7.html'],
['label' => 'Sesi 8', 'file' => '8.html'],
['label' => 'Sesi 9', 'file' => '9.html'],
]
],
'shared2' => [
'label' => 'Shared 2',
'files' => [
['label' => 'Sesi M1', 'file' => 'm1.html'],
['label' => 'Sesi M2', 'file' => 'm2.html'],
['label' => 'Struktur File', 'file' => 'm3.html'],
]
]
];
?>
1️⃣ Pembuka PHP
Tag <?php menandakan awal kode PHP.
Tanpa tag ini, server akan menganggap kode sebagai teks biasa.
2️⃣ Komentar Kode
Baris komentar diawali dengan //.
Komentar tidak dieksekusi dan hanya berfungsi sebagai penjelasan bagi manusia.
3️⃣ Parameter URL ($group dan $file)
Variabel $group dan $file
files.php?g=shared1&f=3.html
Jika parameter tidak ada, nilainya otomatis menjadi string kosong. Ini mencegah error dan membuat aplikasi lebih aman.
⚠️ Klarifikasi Penting: Tanda Tanya ??
Pada kode berikut:
$group = $_GET['g'] ?? '';
Tanda ?? adalah satu operator utuh yang disebut
Null Coalescing Operator, bukan dua tanda tanya terpisah.
Maknanya:
- Jika
$_GET['g']ada dan tidak null → gunakan nilainya - Jika tidak ada → gunakan nilai default (
'')
Mengira hanya ada satu tanda
?.
Padahal secara teknis itu adalah operator ??.
Perbandingan dengan Cara Lama
// Cara lama (lebih panjang)
$group = isset($_GET['g']) ? $_GET['g'] : '';
// Cara modern (direkomendasikan)
$group = $_GET['g'] ?? '';
Untuk PHP versi 7 ke atas, penggunaan
?? adalah praktik terbaik
dan seharusnya menjadi standar.
4️⃣ Path Folder Private
Variabel $basePath menunjuk ke lokasi folder file private:
__DIR__ . '/../app/shared'
Dengan pendekatan ini, aplikasi menjadi portabel dan tidak bergantung pada path absolut.
5️⃣ Array $groups (Whitelist File)
Array $groups berfungsi sebagai daftar resmi file yang boleh diakses.
File yang tidak terdaftar tidak akan bisa ditampilkan.
Pendekatan ini sudah merupakan lapisan keamanan dasar yang baik untuk aplikasi publik.
6️⃣ Label vs Nama File
Setiap file memiliki label (untuk user) dan nama file asli (untuk server). Ini menjaga tampilan tetap rapi tanpa mengorbankan struktur file.
🔒 Rangkuman Besar
- URL menentukan group dan file
$groupsberfungsi sebagai whitelist$basePathmenunjuk folder private- Operator
??mencegah error - Struktur ini aman, rapi, dan profesional