File Handling

Presentasi File Handling PHP

Pertemuan 12

Pengantar File Handling

File Handling adalah kemampuan PHP untuk membaca, menulis, dan memanipulasi file yang tersimpan di server.

📁 Membaca File

Mengambil konten dari file yang sudah ada

  • Membaca file konfigurasi
  • Mengambil data log
  • Membaca template HTML
✏️ Menulis File

Membuat atau mengubah konten file

  • Menyimpan data form
  • Membuat file log
  • Generate file laporan
🔄 Memanipulasi File

Operasi lain pada file system

  • Menghapus file
  • Mengganti nama file
  • Memeriksa keberadaan file

⚠️ Keamanan File Handling

Selalu validasi input pengguna sebelum menulis ke file untuk mencegah serangan seperti:

  • Path Traversal - Akses file di luar direktori yang diinginkan
  • Code Injection - Eksekusi kode berbahaya
  • Denial of Service - Penulisan file berlebihan

Membuka dan Menutup File

Fungsi dasar untuk memulai dan mengakhiri operasi file:

fopen($namafile, $mode)

Membuka file dengan mode tertentu

$file = fopen("data.txt", "r");
if ($file) {
  // Operasi file
  fclose($file);
}
fclose($file)

Menutup file yang sudah dibuka

$file = fopen("data.txt", "r");
// Baca atau tulis file...
fclose($file); // Tutup file

Mode Pembukaan File

'r'

Read Only
Membaca file dari awal. File harus sudah ada.

'w'

Write
Menulis file dari awal. Jika file ada, akan dihapus dan dibuat baru.

'a'

Append
Menambahkan di akhir file. Jika file tidak ada, akan dibuat baru.

'x'

Exclusive Write
Membuat dan menulis file baru. Gagal jika file sudah ada.

Demo: Membuka File

Struktur File System:
📁 project/
  ├── 📄 index.php
  ├── 📄 data.txt
  └── 📄 log.txt
// Membuka file untuk membaca
$file = fopen("data.txt", "r");

// Membuka file untuk menulis (akan membuat baru jika tidak ada)
$log = fopen("log.txt", "w");

// Membuka file untuk menambahkan
$guestbook = fopen("buku_tamu.txt", "a");

Membaca File

Berbagai cara untuk membaca konten dari file:

fread($file, $size)

Membaca sejumlah karakter tertentu

$file = fopen("data.txt", "r");
$content = fread($file, 100); // Baca 100 karakter
fclose($file);
fgets($file)

Membaca satu baris dari file

$file = fopen("data.txt", "r");
while (!feof($file)) {
  $line = fgets($file);
  echo $line . "<br>";
}
fclose($file);
feof($file)

Mengecek apakah sudah mencapai akhir file

while (!feof($file)) {
  // Baca selama belum akhir file
}
file_get_contents($namafile)

Cara praktis membaca seluruh file sekaligus

$content = file_get_contents("data.txt");
echo $content;

Demo: Membaca File

// Isi file data.txt Nama: John Doe Email: john@example.com Pesan: Hello World! Tanggal: 2024-01-01
// Cara 1: file_get_contents()
$content = file_get_contents("data.txt");
echo "<pre>" . $content . "</pre>";

// Cara 2: fgets() per baris
$file = fopen("data.txt", "r");
while (!feof($file)) {
  $line = fgets($file);
  echo "> " . trim($line) . "<br>";
}
fclose($file);

Menulis File

Berbagai cara untuk menulis konten ke file:

fwrite($file, $teks)

Menulis teks ke file yang sudah dibuka

$file = fopen("catatan.txt", "w");
fwrite($file, "Baris pertama.\\n");
fwrite($file, "Baris kedua.\\n");
fclose($file);
file_put_contents($namafile, $data)

Cara praktis menulis seluruh data sekaligus

$data = "Ini adalah konten file.\\n";
file_put_contents("output.txt", $data);

// Atau dengan flag append
file_put_contents("log.txt", $data, FILE_APPEND);

Perbedaan Mode Write vs Append

Mode Keterangan Contoh
'w' (Write) Menimpa seluruh konten file File log yang direset setiap kali
'a' (Append) Menambahkan di akhir file Buku tamu, file log berkelanjutan

Demo: Menulis File

Contoh Program: Buku Tamu

Implementasi lengkap program buku tamu sederhana:

Form Buku Tamu

Pesan Tamu

<?php
// File: buku_tamu.php

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $nama = htmlspecialchars($_POST['name']);
  $pesan = htmlspecialchars($_POST['message']);
  $waktu = date("Y-m-d H:i:s");

  // Format data untuk disimpan
  $data = "Waktu: $waktu\\n";
  $data .= "Nama: $nama\\n";
  $data .= "Pesan: $pesan\\n";
  $data .= "------------------------\\n";

  // Simpan ke file (append mode)
  file_put_contents("buku_tamu.txt", $data, FILE_APPEND);

  echo "<div class='success'>Pesan berhasil disimpan!</div>";
}

// Baca dan tampilkan pesan yang sudah ada
if (file_exists("buku_tamu.txt")) {
  $messages = file_get_contents("buku_tamu.txt");
  echo "<pre>" . $messages . "</pre>";
}
?>

Download Materi

Silakan download file materi berikut untuk praktik lebih lanjut:

File file_handling.php

Kumpulan contoh semua fungsi file handling PHP.

File buku_tamu.php

Program lengkap buku tamu dengan form.

File cheat_sheet_file.pdf

Cheat sheet fungsi-fungsi file handling PHP.

Tugas Individu: File Handling

Tugas ini dikerjakan secara INDIVIDU, bukan kelompok

Deskripsi Tugas

Buat program PHP buku tamu sederhana dengan fitur:

  • Form input untuk nama dan pesan
  • Validasi input (nama dan pesan tidak boleh kosong)
  • Simpan data ke file buku_tamu.txt
  • Tampilkan semua pesan yang sudah tersimpan
  • Format penyimpanan dengan timestamp

Format penyimpanan di file:

=== PESAN TAMU ===
Waktu: 2024-01-15 10:30:00
Nama: John Doe
Pesan: Website yang bagus!
------------------------
Waktu: 2024-01-15 11:15:00
Nama: Jane Smith
Pesan: Terima kasih atas informasinya.
------------------------

Requirements Teknis

  • Gunakan file_put_contents() dengan FILE_APPEND
  • Gunakan file_get_contents() untuk membaca
  • Validasi input server-side
  • Sanitasi input untuk keamanan
  • Tampilkan pesan error/success
  • Format tampilan yang rapi

Cara Pengumpulan Tugas

Instruksi Pengumpulan

a) Dikumpulkan di S-Learn

b) Setiap mahasiswa mengumpulkan secara INDIVIDU

c) Yang di upload link drive dari zip folder berisi:

  • File PHP dengan program lengkap
  • File buku_tamu.txt contoh (jika ada)
  • Screenshot hasil program
  • Dokumentasi singkat

Tugas sudah tersedia di S-Learn. Silakan login dan kerjakan sesuai instruksi.