Tuesday, October 28, 2014

Membuka dan Menampilkan Isi Direktori dengan PHP

Dengan PHP kita bisa membuka, menampilkan isi dan menutup sebuah direktori. PHP menyediakan fungsi opendir() untuk membuka direktori, readdir() untuk menapilkan isi direktori dan closedir() untuk menutup direktori. Ketiga fungsi ini harus digunakan secara bersamaan saat akan menampilkan isi sebuah direktori.

Seperti diketahui bahwa dalam sistem file Unix, direktori sebenarnya adalah juga file namun bertipe direktori. Jadi proses menampilkan isi sebuah direktori diawali dengan membuka direktori, menampilkan satu per satu isi direktori kemudian diakhiri dengan menutup direktori.

Fungsi opendir()

Adalah fungsi yang digunakan untuk membuka sebuah direktori. Meskipun dalam sistem file Unix, direktori sebenarnya adalah sebuah file namun untuk membukanya harus menggunakan fungsi opendir() bukan fopen().

Jika berhasil, fungsi opendir() mengembalikan directory handle resource yang selanjutnya bisa digunakan oleh fungsi readdir() untuk membaca isi direktori tersebut. Jika gagal fungsi opendir() akan mengembalikan nilai FALSE.

Cara penulisan fungsi opendir()

opendir(name,context)

Keterangan parameter :
  • name, wajib diisi, merupakan nama direktori baru yang akan dibuka.
  • context, opsional, merupakan konteks dalam menangani file. Konteks adalah serangkaian pilihan yang dapat memodifikasi perilaku stream sebuah file. ( ditambahkan dalam PHP 5 )

Fungsi readdir()

Adalah fungsi untuk membaca isi sebuah direktori. Fungsi readdir() mengembalikan nilai dari setiap elemen dalam sebuah direktori termasuk file dan sub direktori. Urutan tampilan berdasarkan tipe file (ekstensi) baru kemudian nama file.

Cara penulisan fungsi readdir()

readdir(dir_handle)

Keterangan parameter :
  • dir_handle, wajib diisi, merupakan resource direktori handle yang akan dibuka.
Selain itu fungsi readdir() juga mengembalikan . dan .. sebagaimana entri umum untuk typical list direktori pada sistem file Unix. Agar tidak ikut ditampilkan perlu digunakan penyeleksian seperti ini untuk menyaringnya:

if($file != "." AND $file != "..")

Fungsi closedir()

Adalah fungsi untuk menutup direktori yang sedang dibuka dengan fungsi opendir(). Fungsi closedir() digunakan seiring dengan penggunaan fungsi opendir().

Cara penulisan fungsi readdir()

closedir(dir_handle)

Keterangan parameter :
  • dir_handle, wajib diisi, merupakan resource direktori handle yang akan dibuka.

Contoh script lengkap membuka, menampilkan isi dan menutup direktori dengan PHP

  <html>     
  <body>    
  <form action="" method="POST">    
    Isikan nama direktori yang akan dibuka:</br>    
    <input name="dir" type="text" /> <br />    
    <input type="submit" name="enter" value="Buka" />    
  </form>   
  <?php    
  if(isset($_POST["enter"]))   
  {   
  if(!empty($_POST["dir"]))   
  {   
    //menentukan nama direktori baru dari input text dan mengecek standar formatnya   
    $target_dir = preg_replace("([^\w\s\d\-_~,;:\[\]\(\].]|[\.]{2,})", '', $_POST["dir"]);    
    //mengecek keberadaan direktori  
    if((file_exists($target_dir))&&(is_dir($target_dir)))   
    {   
     //menaruh fungsi opendir kedalam sebuah handle   
     $handle = opendir ($target_dir);   
     
     //mengecek proses handle fungsi opendir    
     if ($handle) {    
         echo "Isi direktori <b>".$target_dir."</b> :<br />";  
         while (($file = readdir($handle)) !== false){  
                if($file != "." AND $file != "..")  
                {echo "- " . $file . "<br>";}  
      }  
      closedir($handle);  
     }    
     else {    
     echo "Direktori <b>".$target_dir."</b> tidak dapat dibuka";    
     }          
    }   
    else   
    {   
     echo "Direktori <b>".$target_dir."</b> Tidak ada";  
    }   
  }   
  }    
  ?>    
  </body>     
  </html>    

Tampilan script pada browser:

menampilkan isi direktori dengan php

Penjelasan script :

Pada form terdapat sebuah input text dan sebuah input submit. Input text berfungsi untuk mamasukkan nama direktori baru yang akan dibuka, sedangkan tombol submit berfungsi untuk mengeksekusi serangkaian kode membuka direktori, menampilkan isi dan menutup direktori.

Proses diawali dengan mengambil text dari input text jika input text tidak dalam keadaan kosong. Selanjutnya input text tersebut dicek dan difilter formatnya sesuai dengan standar penamaan file dan direktori dengan fungsi preg_replace.

Setelah diperoleh nama yang baku, proses berlanjut pada pengecekan keberadaan direktori dengan fungsi file_exist() dan is_dir(). Tujuannya adalah mencegah error karena direktori yang akan dibuka tidak ada.  Jika direktori tidak ada akan ditampilkan pesan "Direktori tidak ada".

Jika direktori ada, dilanjutkan dengan menaruh fungsi opendir() pada variabel $handle (baris ke-19), lalu membaca isi direktori dengan fungsi readdir() pada baris ke-23 dan menampilkan isinya. Agar karakter . dan .. tidak ditampilkan digunakan penyeleksian IF pada baris ke-26.

Jika ternyata direktori tidak dapat dibuka karena masalah permission misalnya akan ditampilkan pesan "Direktori tidak dapat dibuka". Proses diakhiri dengan menutup direktori menggunakan fungsi closedir().

Referensi :

1 komentar: