Menyambung tutorial PHP sebelumnya yaitu import dan export file CSV dengan PHP dan MySQL, pada kesempatan ini saya akan menulis tutorial untuk file handling dengan PHP.
Pada umumnya, aplikasi-aplikasi PHP melakukan tiga tahap untuk membuka atau menulis file, yaitu membuka file, membaca atau menulis file, dan menutup file. Bagaimanapun operasi file secara langsung bisa mempengaruhi keamanan serta performa sistem aplikasi. Oleh karena itu, dalam pengaksesan file, kita perlu memperhatikan beberapa hal. Seperti di bawah ini :
- Pada saat melakukan operasi pembacaan isi file (dengan perintah “r” atau “r+”), pastikan file benar-benar ada. Khusus pembacaan file dengan perintah “a+”, “w+”, dan “x+”, apabila file tidak ada maka akan dibuat file baru.
- Apabila aplikasi bekerja dengan file, sebaiknya letakkan file-file pendukung tersebut terpisah dengan file aplikasi (source code). Hindari penempatan file dalam folder root, dan lakukan validasi path untuk meningkatkan akses file serta mencegah file injection.
- Dalam melakukan operasi pembacaan file, pastikan bahwa operasi diimplementasikan secara murni (native). PHP menyediakan fungsi high-level yang bisa membuka file kemudian men-load atau menulis data ke file dalam sebuah operasi tunggal, yaitu fungsi file_get_contents().
- Berhati-hatilah dalam memanipulasi file, kita akan mendapatkan banyak masalah jika kita melakukan sesuatu yang salah. Kesalahan umum adalah: mengedit file yang salah, mengisi hard-drive dengan data sampah, dan menghapus isi dari file secara tidak sengaja.
Di bawah ini adalah tutorial sederhana untuk penanganan file.
- Membuat file baru (sebuah file kosong)
123<?php$namafile = 'file-baru.txt';$handle = fopen($namafile, 'w') or die('File tidak bisa dibuka: ' . $namafile); - Membuka file
123<?php$namafile = 'file-baru.txt';$handle = fopen($namafile, 'r') or die('File tidak bisa dibuka: ' . $namafile); - Membaca isi file
12345<?php$namafile = 'file-baru.txt';$handle = fopen($namafile, 'r') or die('File tidak bisa dibuka: ' . $namafile);$data = fread($handle, filesize($namafile));echo $data; - Menulis data ke dalam file
12345<?php$namafile = 'file-baru.txt';$handle = fopen($namafile, 'w') or die('File tidak bisa dibuka: ' . $namafile);$data = 'ditulis dengan script php';fwrite($handle, $data); - Menambahkan isi file
1234567<?php$namafile = 'file-baru.txt';$handle = fopen($namafile, 'a') or die('File tidak bisa dibuka: ' . $namafile);$data = 'data baru 1';fwrite($handle, $data);$new_data = "\n" . 'data baru 2';fwrite($handle, $new_data); - Menutup file
12345<?php$namafile = 'file-baru.txt';$handle = fopen($namafile, 'w') or die('File tidak bisa dibuka: ' . $namafile);//baris operasi untuk file inifclose($handle); - Menghapus file
123<?php$namafile = 'file-baru.txt';unlink($namafile);
Berikut ini mode-mode yang digunakan dalam mengakses file
Mode | Penjelasan |
r | Membuka file hanya untuk dibaca, pointer dimulai dari awal file. |
w | Membuka file hanya untuk menulis, menghapus isi file atau membuat file baru jika tidak ada. File pointer dimulai pada awal file. |
a | Membuka file hanya untuk menulis, data yang ada dalam file tersebut tidak dihapus. File pointer dimulai pada akhir file. Membuat file baru jika file tidak ada. |
x | Membuat file baru hanya untuk menulis, akan bernilai FALSE atau error jika file sudah ada sebelumnya. |
r+ | Membuka file untuk dibaca dan ditulis, pointer dimulai dari awal file. |
w+ | Membuka file untuk dibaca dan ditulis, menghapus isi file atau membuat file baru jika tidak ada. File pointer dimulai pada awal file. |
a+ | Membuka file untuk dibaca dan ditulis, data yang ada dalam file tersebut tidak dihapus. File pointer dimulai pada akhir file. Membuat file baru jika file tidak ada. |
x+ | Membuka file untuk dibaca dan ditulis, akan bernilai FALSE atau error jika file sudah ada sebelumnya. |
Semoga bermanfaat 🙂