Minggu, 10 Juni 2012

Pemrograman Web PHP : Membuat Halaman Download Tidak Kelihatan Lokasi FileAsalnya


Kadang kita ingin memberikan fasilitas download suatu file pada suatu halaman web, hanya untuk member yang sudah memiliki hak tertentu, misal sudah login. Kita tidak ingin file tersebut dapat didownload oleh publik atau dicuri dengan langsung mengetikkan lokasi URL filenya.

Caranya adalah dengan meletakkan file yang akan didownload diluar folder htdocs / www (folder webroot), kemudian berikan script kode program PHP berikut ini untuk membuat agar file tersebut dapat terambil dan didownload lewat file ini. Sedangkan karena file ini merupakan sebuah script PHP bukan file yang akan didownload secara langsung, maka kita sempat memberikan program untuk mengecek autentikasi user sebelum meneruskan proses download

<?php 
//..disini bisa ditambahkan dahulu kode program untuk autentikasi user login
//..apakah user berhak mendownload file ini dsb.
//..bisa ditambahkan dengan parameter POST atau GET, file mana yang mau didownload.

$pathfile = "E:/Master/document.zip"; //lokasi path file
$namafile = "document.zip"; //nama file
$tipefile="application/octet-stream"; // bisa diubah sesuai tipe data 
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Type: " . $tipefile);
header("Content-Length: " .(string)(filesize($pathfile)) );
header('Content-Disposition: attachment; filename="'.$namafile); 

header("Content-Transfer-Encoding: binary"); 

readfile($pathfile); // baca isi file sehingga bisa terdownload

exit(); 
?>

Semoga berguna, karena script ini pernah sangat berguna untuk penulis ketika mengerjakan suatu Project.