Penjelasan Lengkap Struktur Files Viewer
Dokumentasi Teknis · PHP Dasar

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.

Pendapat: Komentar terstruktur sangat membantu untuk proyek jangka panjang dan kolaborasi tim.

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 ('')
Kesalahan umum pemula:
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'] ?? '';
Pendapat pribadi:
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.

Kesimpulan:
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
  • $groups berfungsi sebagai whitelist
  • $basePath menunjuk folder private
  • Operator ?? mencegah error
  • Struktur ini aman, rapi, dan profesional