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~~ Otomatisasi Pembuatan dan Upload Konten Blog, Sudah digunakan lebih dari 110 Blogger Expert!Cocok untuk Anda yang tidak ingin direpotkan oleh pekerjaan harian seperti membuat konten dan posting harian, biarkan autoblog yang bekerja untuk Anda, semua serba otomatis. Cocok untuk SEO. Tak ada yang se-MUDAH, se-FLEKSIBEL & se-POWERFULL IW-AutoBlog dalam mengotomatisasi pembuatan konten Blog. Lebih lengkap silahkan kunjungi di sini)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~~ 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. <?php echo "<a href=reg.php>Yang sudah Registrasi dan bayar duitnya ... :D~~~</a><br><br> ?> Kedua adalah file reg.php. Penulis andaikan script ini adalah keadaan ketika user telah teregistrasi dan akan mendownload file yang diinginkan. <?php session_start(); require_once "code.php"; $_SESSION['code'] = $codenya; echo "<br><br><br><table
border=0 align=center><form action=cek.php method=post> ?> Sedikit penulis jelaskan script diatas. Terdapat suatu fungsi dan satu form. $codenya = generateCode(); Fungsi ini diambil dari file code.php, isinya adalah sebagai berikut : <?php function generateCode() { ?> Fungsi tersebut hanya melakukan proses randomisasi angka dan huruf.
Kemungkinan angka-huruf dan berapa bit yang akan ditampilkan dapat diset sesuai keinginan. while ($i < $characters) { Ini berarti, lakukan proses randomisasi sepanjang n $characters dengan menggunakan variable $possible sebagai kemungkinannya. Balik lagi ke halaman reg.php $_SESSION['code'] = $codenya; $_SESSION['code'] nantinya digunakan sebagai patokan untuk melakukan pencocokan dengan variable $_POST['code']. $_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 : <?php session_start(); if (ISSET($_POST['nama']) && ISSET($_POST['email']) && ISSET($_POST['code'])) if ( $_SESSION['code'] ==? $_POST['code'])? {? header ("location: download.php/true/$_SESSION[download]"); } } ?> 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 Kemudian script intinya adalah download.php : <?php session_start(); if (ISSET($_SESSION['download'])? && ($_SESSION['download'] == $_SESSION['cekdownload']) ) // artibut file if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 5') or // file apa yang mau didownload --> untuk browser else { header("location: redirect"); } ?> Terdapat kalimat 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 <?php kembali ke script inti tadi, yakni download.php kalimat ini : if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 5') or Sebetulnya hanya mencegah kebiasaan buruk yang dilakukan oleh dua browser ketika membaca suatu type file. Selanjutnya : yang pertama header content-disposition ini memerintahkan browser untuk memperlakukan file yang kita letakkan dalam direktori hosting sebagai sebuah file yang akan didownload. 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. 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. 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. By: Al-k Silahkan dikembangkan. Greetz : |