File Handling di PHP

Pelajari cara membaca, menulis, dan mengelola file menggunakan PHP. File handling adalah kemampuan penting untuk menyimpan dan mengambil data dari file.

Pengenalan File Handling

File handling memungkinkan aplikasi PHP untuk berinteraksi dengan sistem file server, seperti membaca konfigurasi, menyimpan log, atau mengelola upload file.

Membuka dan Menutup File

<?php
// Membuka file untuk dibaca
$file = fopen("data.txt", "r");

if ($file) {
    echo "File berhasil dibuka";
    
    // Menutup file
    fclose($file);
} else {
    echo "Gagal membuka file";
}
?>

Mode File

Mode Deskripsi
r Read only. File pointer dimulai dari awal file
w Write only. Menghapus isi file atau membuat file baru
a Write only. File pointer dimulai dari akhir file
r+ Read/write. File pointer dimulai dari awal file
w+ Read/write. Menghapus isi file atau membuat file baru
a+ Read/write. File pointer dimulai dari akhir file

Membaca File

Membaca Seluruh File

<?php
// Cara 1: Menggunakan file_get_contents()
$content = file_get_contents("data.txt");
echo $content;

// Cara 2: Menggunakan fread()
$file = fopen("data.txt", "r");
$size = filesize("data.txt");
$content = fread($file, $size);
fclose($file);
echo $content;
?>

Membaca File Baris per Baris

<?php
// Cara 1: Menggunakan fgets()
$file = fopen("data.txt", "r");

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

// Cara 2: Menggunakan file()
$lines = file("data.txt");
foreach ($lines as $line) {
    echo $line . "<br>";
}
?>

Membaca File CSV

<?php
$file = fopen("data.csv", "r");

while (($data = fgetcsv($file)) !== FALSE) {
    echo "Nama: " . $data[0] . ", Email: " . $data[1] . "<br>";
}
fclose($file);
?>
Tips: Selalu periksa apakah file ada menggunakan file_exists() sebelum membacanya untuk menghindari error.

Menulis File

Menulis ke File

<?php
// Cara 1: Menggunakan file_put_contents()
$content = "Hello World!";
file_put_contents("output.txt", $content);

// Cara 2: Menggunakan fwrite()
$file = fopen("output.txt", "w");
fwrite($file, "Hello World!");
fclose($file);
?>

Menambah ke File (Append)

<?php
// Menggunakan file_put_contents dengan flag FILE_APPEND
$content = "Data baru\n";
file_put_contents("log.txt", $content, FILE_APPEND);

// Menggunakan fopen dengan mode 'a'
$file = fopen("log.txt", "a");
fwrite($file, "Data tambahan\n");
fclose($file);
?>

Menulis Array ke File CSV

<?php
$data = [
    ['John Doe', 'john@email.com', '25'],
    ['Jane Smith', 'jane@email.com', '30'],
    ['Bob Johnson', 'bob@email.com', '35']
];

$file = fopen("users.csv", "w");

foreach ($data as $row) {
    fputcsv($file, $row);
}
fclose($file);
?>
Perhatian: Pastikan direktori memiliki permission yang benar untuk menulis file. Mode 'w' akan menghapus isi file yang sudah ada.

File Handling Lanjutan

Informasi File

<?php
$filename = "data.txt";

if (file_exists($filename)) {
    echo "Ukuran file: " . filesize($filename) . " bytes<br>";
    echo "Tipe file: " . filetype($filename) . "<br>";
    echo "Waktu modifikasi: " . date("Y-m-d H:i:s", filemtime($filename)) . "<br>";
    echo "Dapat dibaca: " . (is_readable($filename) ? 'Ya' : 'Tidak') . "<br>";
    echo "Dapat ditulis: " . (is_writable($filename) ? 'Ya' : 'Tidak') . "<br>";
}
?>

Upload File

<?php
// Form HTML untuk upload
/*
<form method="post" enctype="multipart/form-data">
    <input type="file" name="upload">
    <input type="submit" value="Upload">
</form>
*/

if ($_FILES['upload']['error'] == 0) {
    $uploadDir = 'uploads/';
    $uploadFile = $uploadDir . basename($_FILES['upload']['name']);
    
    // Validasi tipe file
    $allowedTypes = ['jpg', 'jpeg', 'png', 'gif'];
    $fileExt = strtolower(pathinfo($uploadFile, PATHINFO_EXTENSION));
    
    if (in_array($fileExt, $allowedTypes)) {
        if (move_uploaded_file($_FILES['upload']['tmp_name'], $uploadFile)) {
            echo "File berhasil diupload.";
        } else {
            echo "Gagal mengupload file.";
        }
    } else {
        echo "Tipe file tidak diizinkan.";
    }
}
?>

Mengelola Direktori

<?php
// Membuat direktori
if (!is_dir('logs')) {
    mkdir('logs', 0755, true);
}

// Membaca isi direktori
$files = scandir('.');
foreach ($files as $file) {
    if ($file != '.' && $file != '..') {
        echo $file . "<br>";
    }
}

// Menghapus file
if (file_exists('temp.txt')) {
    unlink('temp.txt');
}

// Menghapus direktori kosong
if (is_dir('temp') && count(scandir('temp')) == 2) {
    rmdir('temp');
}
?>
Best Practice: Selalu validasi input, batasi ukuran file, dan gunakan path yang aman untuk menghindari security issues.
Path Belajar PHP
Step 1: Dasar-Dasar PHP

Memahami apa itu PHP dan cara instalasinya

๐Ÿ“„ Pengenalan๐Ÿ“„ Instalasi
Step 2: Sintaks & Variabel

Mempelajari cara menulis kode PHP yang benar

๐Ÿ“„ Sintaks Dasar๐Ÿ“„ Variabel๐Ÿ“„ Operator
Step 3: Logika & Function

Memahami alur program dan pengorganisasian kode

๐Ÿ“„ Struktur Kontrol๐Ÿ“„ Function๐Ÿ“„ Array
Step 4: Web Development

Membuat aplikasi web interaktif

โœ… Formโœ… Session๐Ÿ“ File
Step 5: Database & Keamanan

Mengelola data dan keamanan aplikasi

๐Ÿ“„ Database๐Ÿ“„ Pdo๐Ÿ“„ Security
Step 6: Advanced Topics

Topik lanjutan untuk pengembangan professional

๐Ÿ“„ Oop Basic๐Ÿ“„ Email๐Ÿ“„ Framework
Tips: Ikuti urutan step untuk hasil belajar optimal. Setiap step membangun pengetahuan dari step sebelumnya.
Tutorial Saat Ini
Level: Menengah

Memerlukan pemahaman dasar PHP

Daftar Isi
Tips Belajar