Loka Dwiartara

dokumen-dokumen yang mirip
Tutorial PHP Metode Searching - Multiple Keyword

Oleh: George Thomas. Web Site:

BAB XIII BEKERJA DENGAN SESSION

TUTORIAL PHP MYSQL Langkah Tepat menjadi Web Developer Handal, menguasai PHP dan MySQL, jalan terbaik membuat website dan aplikasi berbasis web

3 Cara Belajar HTML, PHP dan MySQL. Nama Penulis Lisensi Dokumen:

Membuat Shopping Cart Sederhana Menggunakan PHP

TUTORIAL PHP MYSQL Langkah Tepat menjadi Web Developer Handal, menguasai PHP dan MySQL, jalan terbaik membuat website dan aplikasi berbasis web

Instalasi MySQL dengan App Serv [ Hari Zulianto ] [Year] JOB SHEET

Membuat Halaman Login Dengan PHP

TUTORIAL PHP MYSQL Langkah Tepat menjadi Web Developer Handal, menguasai PHP dan MySQL, jalan terbaik membuat website dan aplikasi berbasis web

Kinta mahadji

Membuat Database mysql dengan PhpMyAdmin

Heru Widayat

Aplikasi CRUD Sederhana Dengan PHP dan MySql

Cara Membuat Security Image Code Dengan PHP

BAB I PENDAHULUAN LATAR BELAKANG CONTOH KASUS. Diktat Mata Kuliah Aplikasi Teknologi Online Oleh : Andri Heryandi

BAB IV HASIL DAN PEMBAHASAN. penulis memakai program server web local yaitu AppServ. Di dalam aplikasi ini terdapat

Untung Subagyo

Menampilkan Kata Motivasi Secara Acak di Web

LAPORAN PRAKTIKUM 5 SESSION & COOKIE

MODUL 6 SESSION DAN USER AUTHENTICATION

Dalam membuat sebuah website ada beberapa hal yang perlu Anda persiapkan sebelum Anda memulainya.

MODUL 7 SESSION DAN USER AUTHENTICATION

Indowebster media penyimpanan berbasis Cloud Computing

Design Web Dengan 2 Kolom

BAB IV HASIL DAN UJI COBA

Instalasi CMS Joomla di Web Hosting

Hello World. Chocolove Mic

Session. Pendahuluan

Menambah Lokasi Jaringan FTP pada My Computer

Septina Budi Kurniawati

Sofiyan Arif Kurniawan

TUTORIAL PHP MYSQL Langkah Tepat menjadi Web Developer Handal, menguasai PHP dan MySQL, jalan terbaik membuat website dan aplikasi berbasis web

Lisensi Dokumen: Uraian Kasus :

Cara Mudah Membuat Banner Animasi

Sofiyan Arif Kurniawan

TUTORIAL MEMBUAT PROGRAM KALKULATOR DENGAN OOP PHP

Dengan asumsi bahwa aplikasi masih menggunakan cookie, maka query untuk membuka profil adalah seperti berikut:

Design Web 2 Kolom Flexible

Pengenalan Script. Definisi HTML

Panduan Instalasi Drupal 7 di Localhost

MODUL 8.1 WEB PROGRAMMING : PHP 4

Panduan Instalasi Apache, PHP dan MySQL pada GNU/Linux

Moh Sulhan

Pertama-tama kita buat form login terlebih dahulu. login.htm

STRUKTUR DASAR PHP ASUMSI 02/10/2014

Cara Resume Melanjutkan Download Di Idm Yang Gagal

Sudarma Sopian Pendahuluan. Isi. Lisensi Dokumen:

MATERI WEB. Pembuatan Login Aplikasi, Dasboard Admin & Menu Keluar menggunakan PHP & Mysql. Bas-Dev : Ahmad Bastiar

MODUL PEMROGRAMAN WEB

ADMIN MANUAL AL-QUR AN WEB

Nama Penulis Pendahuluan. Isi. Lisensi Dokumen:

Muhidin

Monitoring Client - Server dengan VNC

BAB IX COOKIE DAN SESSION

Panduan Web Desain Menggunakan Editor Macromedia Dreamweaver 8

Sutrisno

Otomasi Shell Script Lanjut

Tutorial PHP Kalkulator online dengan PHP

Menangani Input dari User

Sudarma Sopian Blog: Pendahuluan. Isi. Lisensi Dokumen:

Langkah 1. Asep Tatang S.

Contoh Penerapan Reference Integrity di MySQL dengan PhpMyAdmin

I. Setting Yang Perlu Dilakukan: 1. Download terlebih dahulu installer Mahara di alamat website resmi mahara:

Anny Yuniarti

Belajar Mengenal Indowebster

RAPIDSHARE media penyimpanan berbasis Cloud Computing

BAB 1 PENDAHULUAN Latar Belakang Masalah

Administrasi Website Berbasis CPanel Hosting

Bab 13 Tentang SESSION

David Odang Apa itu Blog dan Movable Type? Lisensi Dokumen:

APLIKASI BERBASIS WEB PEMETAAN INFORMASI PADA GAMBAR BITMAP

Langkah Cara Membuat Form Login Menggunakan PHP dan MySQL Langkah 1: Membuat Tabel MySQL User/Pengguna

C# Part 1 Pengenalan Logika Basic

Upload File dengan Metode AJAX

Zaid Romegar Mair Lisensi Dokumen: Gambaran umum : Break statement

(artikel Pengantar ke PHP, Bpk Marsani Asfi)

Rahmat Hidayat

Manajemen Upload & Download File

Septina Budi Kurniawati

Muhammad Adri. Pendahuluan. Instalasi Xampp

Lim Server digunakan untuk mengelola jumlah concurrent license, yang akan menentukan jumlah WebInspect server yang dapat dijalankan (aktif).

Berikut merupakan salah satu contoh dari pesan SOAP (SOAP Message):

Bondan Muliawan

Sofiyan Arif Kurniawan

BAB III IMPLEMENTASI. Program penghubung database tersebut disimpan dengan nama. konek.php. Berikut merupakan kode program penghubung Database :

Cara Membuat status YM muncul di website

Ahmad Aminudin

Tutorial Dasar Cara Membuat Blog

Budi Satrio

BAB X AKSES DAN MANIPULASI DATA

Daftar Isi. 2 P a g e

Transkripsi:

Batasi Download File dengan PHP Script Loka Dwiartara Alkemail@gmail.com http://www.ilmuwebsite.com Lisensi Dokumen: Seluruh dokumen di IlmuKomputer.Com dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari IlmuKomputer.Com. Salah satu masalah seorang web developer adalah ketika berusaha melakukan pembatasan download. Pembatasan download disini bukanlah dimaksudkan sebagai manajemen bandwidth seperti yang dilakukan oleh administrator jaringan komputer. Tapi yang dimaksud pembatasan download disini adalah membatasi hanya user yang telah terdaftar saja yang boleh melakukan download. Masalah kembali muncul ketika browser menampilkan letak asli direktori penyimpanan file tersebut. Tentunya script yang telah di buat menjadi sia-sia. Masalah lain berkenaan dengan pembatasan download kembali ada ketika user menggunakan download manager. Bisa diambil contoh www.pdfchm.com. Belakangan ini penulis pun memiliki beberapa pertanyaan. Bagaimana melakukan pencegahan yang baik agar hanya user yang sudah registrasi saja yang dipersilahkan untuk mendownload. Maklum, banyak pendownload sejati yang tidak pernah kehabisan akal untuk mencari cara bagaimana mendownload yang baik. :D~~ Termasuk penulis sendiri. :D~~ Beberapa waktu terakhir penulis mencoba merakit sebuah script untuk memberikan solusi itu semua. Yang menakjubkan adalah didalamnya sudah termasuk solusi pencegahan download oleh Download Manager seperti IDM, Download Accelerator Plus, dan berbagai download manager lain. :D~~ Yang ada hanyalah user mendapatkan file html biasa ketika melakukan download menggunakan download manager. :D~~ Kesal memang di sisi pendownload. Tapi menguntungkan bagi kita. Setidaknya bisa meminimalisir masalah-masalah yang ada. Yupsss... dari pada penulis berbicara sendirian nggak karuan, lebih baik langsung penulis jabarkan sedetil mungkin mengenai cara pembatasan download dengan php. Di bawah ini hanyalah sebuah contoh yang penulis buat untuk menjelaskan bagaimana cara kerja script ini. Pertama adalah file index.php penulis tidak akan menjelaskan script ini, karena cukup familiar. 1

echo "<a href=reg.php>yang sudah Registrasi dan bayar duitnya... :D~~~</a><br><br> Kalo mau ngetest yang nggak bayar browsernya di clear sessionnya dulu... <br> <a href=non-reg.php>tukang download tapi nggak bayar, gw banget :D~~~</a>"; Kedua adalah file reg.php. Penulis andaikan script ini adalah keadaan ketika user telah teregistrasi dan akan mendownload file yang diinginkan. Ditampilkan sebuah form berikut security codenya. User dipersilahkan untuk mengisi nama, email dan code yang telah disediakan. Jika syarat telah terpenuhi maka user diperbolehkan untuk melakukan download. Jika tidak user akan diredirect ke halaman redirect.php. session_start(); require_once "code.php"; $codenya = generatecode(6); $_SESSION['code'] = $codenya; $_SESSION['download'] = session_id(); $_SESSION['cekdownload'] = $_SESSION['download']; echo "<br><br><br><table border=0 align=center><form action=cek.php method=post> <tr><td>nama</td><td><input type=text name=nama></td></tr> <tr><td>email</td><td><input type=text name=email></td></tr> <tr><td></td><td>$codenya</td></tr> <tr><td>codenya</td><td><input type=text name=code></td></tr> <tr><td></td><td><input type=submit name=kirim value=download!!></td></tr> </form> </table>"; Sedikit penulis jelaskan script diatas. Terdapat suatu fungsi dan satu form. Fungsi tersebut adalah generatecode()... $codenya = generatecode(); Fungsi ini diambil dari file code.php, isinya adalah sebagai berikut : function generatecode() { $characters = 5; $possible = '24107ILMUWEBST'; $code = ''; $i = 0; while ($i < $characters) { $code.= substr($possible, mt_rand(0, strlen($possible)-1), 1); $i++; 2

return $code ; Fungsi tersebut hanya melakukan proses randomisasi angka dan huruf. Kemungkinan angka-huruf dan berapa bit yang akan ditampilkan dapat diset sesuai keinginan. Kalimat intinya adalah : while ($i < $characters) { $code.= substr($possible, mt_rand(0, strlen($possible)-1), 1); $i++; Ini berarti, lakukan proses randomisasi sepanjang n $characters dengan menggunakan variable $possible sebagai kemungkinannya. Anda dapat menggunakan logika milik anda untuk melakukan proses randomisasi. Ini hanya sebagai contoh proses randomisasi yang nantinya digunakan sebagai security code. Balik lagi ke halaman reg.php $_SESSION['code'] = $codenya; $_SESSION['download'] = session_id(); $_SESSION['cekdownload'] = $_SESSION['download']; $_SESSION['code'] nantinya digunakan sebagai patokan untuk melakukan pencocokan dengan variable $_POST['code']. Variable $_POST['code'] sendiri dihasilkan dari text inputan bernama 'code' yang dimasukkan oleh user ketika mengisi form inputan. $_SESSION['download'] di peroleh dari session_id(), disini penulis gunakan ketika user dalam kondisi telah login. Dan nantinya pula akan digunakan untuk memberikan izin hanya user yang telah teregistrasi saja yang dipersilahkan untuk mendownload. $_SESSION['cekdownload'], penulis gunakan variable session ini untuk penegasan saja. Kemudian file cek.php berisi : session_start(); if (ISSET($_POST['nama']) && ISSET($_POST['email']) && ISSET($_POST['code'])) { if ( $_SESSION['code'] == $_POST['code']) { header ("location: download.php/true/$_session[download]"); else { echo "Security Codenya Salah!!"; 3

script ini berfungsi untuk melakukan filterisasi : if (ISSET($_POST['nama']) && ISSET($_POST['email']) && ISSET($_POST['code'])) ketika user telah berhasil memasukkan nama, email dan security code if ( $_SESSION['code'] == $_POST['code']) dan apabila user telah benar mengisi security codenya maka header ("location: download.php/true/$_session[download]") user akan di redirect untuk mendownload filenya. dan kalimat ini else { echo "Security Codenya Salah!!"; terjadi karena user salah mengisi codenya. Kemudian script intinya adalah download.php : session_start(); if (ISSET($_SESSION['download']) && ($_SESSION['download'] == $_SESSION['cekdownload']) ) { // artibut file $filename = 'sample.zip'; $mimetype = 'application/zip'; if (strpos($_server['http_user_agent'], 'MSIE 5') or strpos($_server['http_user_agent'], 'Opera 7')) { $mimetype = 'application/x-download'; // file apa yang mau didownload --> untuk browser header('content-disposition: attachment; filename='. $filename); header('content-type: '. $mimetype); header('content-length: '. filesize($filename)); // Display the file readfile($filename); else { header("location: redirect"); 4

Terdapat kalimat seperti ini : if (ISSET($_SESSION['download']) && ($_SESSION['download'] == $_SESSION['cekdownload']) ) seperti yang penulis katakan tadi, ini hanyalah penyeleksian saja, sengaja penyeleksian penulis lakukan berulang-ulang karena pada dasarnya script inti ini berada di halaman yang berbeda dengan halaman ketika user baru berhasil login. Sehingga script ini yang menjadi tulang punggung. Tugasnya adalah menipu browser dengan memberikan spesial header. Sehingga walaupun user yang sebelumnya telah melakukan download, dan memberikan link seperti ini : http://www.victim.com/download.php/true/80261996fc7a35138de58216ac02a78a kepada temannya untuk mendownload sedangkan user yang telah teregistrasi telah habis masa sessionnya, yang ada hanyalah user yang belum teregistrasi tersebut diredirect ke halaman yang membuat keadaan menjadi sepi dan dunia semakin fana. :D~~ Di script contoh saya memberikan kalimat seperti ini berada dalam file redirect.php echo "<h1><font color=red>kalo mau Download <br>bayar Donk... <br>huehuheu :D~~</font></h1>"; kembali ke script inti tadi, yakni download.php kalimat ini : if (strpos($_server['http_user_agent'], 'MSIE 5') or strpos($_server['http_user_agent'], 'Opera 7')) { $mimetype = 'application/x-download'; Sebetulnya hanya mencegah kebiasaan buruk yang dilakukan oleh dua browser ketika membaca suatu type file. Selanjutnya : header('content-disposition: attachment; filename='. $filename); header('content-type: '. $mimetype); header('content-length: '. filesize($filename)); // Display the file readfile($filename); yang pertama header('content-disposition: attachment; filename='. $filename); header content-disposition ini memerintahkan browser untuk memperlakukan file yang kita letakkan dalam direktori hosting sebagai sebuah file yang akan didownload. header content-type, ini sengaja digunakan karena terkadang kedua browser yakni opera dan internet explorer kembali gagal mengenali type file. Perlu diberitahukan berkali kali memang. Bandelll!! :D~~~ huehue. ( Makanya pake mozilla firefox dong :D~) header('content-length: '. filesize($filename)); kalimat ini berfungsi untuk memberitahukan seberapa besar file yang akan di download, sehingga ketika browser melakukan download sang user bisa melihat dalam progress bar seberapa persen file yang sedang didownload. 5

Yang terakhir adalah readfile($filename);, karena header-header sebelumnya telah mengenalkan kepada browser bahwa file ini bertipe zip, memiliki size sekian dan juga telah memberitahukan browser untuk mengenali bahwa file tersebut yang nantinya akan didownload maka readfile sebagai pelengkap untuk membaca file yang akan didownload, secara teknis hanya menampilkan form dialog download. Tidak ketinggalan penulis pun membuat sebuah file.htaccess untuk melakukan redirect. Hanya bertugas untuk menyamakan kedudukan http://www.victim.com/redirect.php dengan http://www.victim.com/download.php/true/redirect. Jadi jangan lupa untuk mengaktifkan mod_rewite anda. sama Untuk mengaktifkan mod_rewrite, anda bisa mengedit file httpd.conf dengan menghilangkan tanda # pada baris #LoadModule rewrite_module modules/mod_rewrite.so sehingga menjadi LoadModule rewrite_module modules/mod_rewrite.so Selamat mencoba. Script lengkapnya dapat anda download disini http://www.networkandgame.890m.com/ilmuwebsite/labdownload.zip By: Al-k Alkemail@gmail.com http://www.ilmuwebsite.com Silahkan dikembangkan. Greetz : b_scorpio tukang jualan CD. Jojo :-) syabab.el-bughury -->tukang download, tukang jamu :D~~, tukang install Biografi Penulis Loka Dwiartara. Berusaha untuk menamatkan kuliahnya di Sekolah Tinggi Teknologi Telematika. Mencoba mengembangkan ilmuwebsite.com, juga mendalami pemrogaman web dengan PHP, dan MySQL, webservice dengan AJAX, jaringan komputer berbasis Linux dan juga sedang memulai hobinya untuk membuat game 2D pertamanya dengan bahasa c++ dalam environment SDL ( Simple Directmedia Layer ). Tergolong masih hijau dalam pembuatan artikel lepas :D. Maka dari itu, mohon saran+kritiknya. Terima kasih. 6