Membuat Script Upload Download File Dengan Batasan Hak Akses
.OK… bagaimana ide dan langkah-langkah membuatnya? simak artikel ini lebih lanjut.Langkah pertama, kita siapkan terlebih dahulu 2 buah tabel yaitu tabel ‘user’ dan tabel ‘upload’. Tabel ‘user’ digunakan untuk menyimpan data user yang berhak mengakses, serta tabel ‘upload’ untuk menyimpan file-file yang diupload oleh user.
CREATE TABLE user ( username varchar(20), password varchar(32), PRIMARY KEY (username)
CREATE TABLE upload (id int(11) auto_increment, name varchar(30), type varchar(30), size int(11), content mediumblob,username varchar(20), PRIMARY KEY (id)
Selanjutnya untuk sekedar mencoba, Anda bisa sekalian tambahkan beberapa user
1.INSERT INTO `user` VALUES ('a', 'pass1');2.INSERT INTO `user` VALUES ('b', 'pass2');Langkah kedua, kita siapkan form login untuk user
index.htm
01.<h1>Login User</h1>02. 03.<form method="post" action="login.php">04.<table>05. <tr><td>Username</td><td><input type="text" name="user"></td></tr>06. <tr><td>Password</td><td><input type="password" name="pass"></td></tr>07. <tr><td></td><td><input type="submit" name="submit" value="Submit"></td></tr>08.</table>09.</form>login.php
01.<?php02. 03.// koneksi ke mysql04.mysql_connect('dbhost', 'dbuser', 'dbpass');05.mysql_select_db('dbname');06. 07.// membaca username dan password dari form login08.$username = $_POST['user'];09.$password = $_POST['pass'];10. 11.// mencari data user yang login tujuannya untuk mendapatkan password dari database12.$query = "SELECT * FROM user WHERE username = '$username'";13.$hasil = mysql_query($query);14.$data = mysql_fetch_array($hasil);15. 16.// mencocokkan password user dari database dengan password dari form17.if ($password == $data['password'])18.{19. // jika kedua password sama, maka login berhasil20. // simpan username ke dalam session21. 22. session_start();23. $_SESSION['username'] = $username;24. echo "<h1>Login Sukses</h1>";25. echo "<h2>Anda login sebagai : ".$username."</h2>";26. 27. // tampilkan menu user28. echo "<p>[ <a href='formupload.php'>Upload</a> ] [ <a href='list.php'>Daftar File</a> ] [ <a href='logout.php'>Logout</a> ]</p>";29.}30.else31.{32. // jika kedua password tidak cocok, maka login gagal33. echo "<h1>Maaf login gagal</h1>";34.}35. 36.?>Nah… untuk mencegah ada penyusup yang masuk tanpa login, kita buat dulu script untuk pengamanannya.
cek.php
01.<?php02. 03.session_start();04. 05.if (!isset($_SESSION['username']))06.{07. echo "<h1>Maaf Anda belum login</h1>";08. exit;09.}10. 11.?>Nah… selanjutnya script cek.php di atas diincludekan ke dalam script ‘formupload.php’ dan ‘list.php’.
Langkah berikutnya, kita sudah bisa buat script untuk formupload.php nya
formupload.php
01.<?php02.session_start();03.include "cek.php";04. 05.// membaca nama user yang tersimpan dalam session06.$username = $_SESSION['username'];07. 08.echo "<h1>Anda login sebagai : ".$username."</h1>";09.echo "<p>[ <a href='formupload.php'>Upload</a> ] [ <a href='list.php'>Daftar File</a> ] [ <a href='logout.php'>Logout</a> ]</p>";10.echo "<p>Silakan upload file</p>";11.?>12. 13.// form untuk upload14. 15.<form method="post" enctype="multipart/form-data" action="upload.php">16.<table>17.<tr><td><input type="hidden" name="MAX_FILE_SIZE" value="2000000">18. <input name="userfile" type="file">19. </td>20. <td><input name="upload" type="submit" value="Upload">21. </td>22.</tr>23.</table>24.</form>upload.php
01.<?php02. 03.session_start();04. 05.// untuk keamanan, kita juga includekan cek.php06.include "cek.php";07. 08.// membaca nama file09.$fileName = $_FILES['userfile']['name']; 10. 11.// membaca nama file temporary12.$tmpName = $_FILES['userfile']['tmp_name']; 13. 14.// membaca size file15.$fileSize = $_FILES['userfile']['size'];16. 17.// membaca tipe file18.$fileType = $_FILES['userfile']['type'];19. 20.// membaca username yang disimpan dalam session21.// username ini sekaligus menyatakan informasi pemilik file22.$username = $_SESSION['username'];23. 24.// langkah membaca isi file yang diupload25.$fp = fopen($tmpName, 'r');26.$content = fread($fp, filesize($tmpName));27.$content = addslashes($content);28.fclose($fp);29. 30.// koneksi ke mysql31.mysql_connect('dbhost','dbuser','dbpass');32.mysql_select_db('dbname');33. 34.// query SQL untuk menyimpan file ke database disertai username pemiliknya35. 36.$query = "INSERT INTO upload (name, size, type, content, username)37. VALUES ('$fileName', '$fileSize', '$fileType', '$content', '$username')";38. 39.mysql_query($query);40.echo "<h1>Anda login sebagai : ".$username."</h1>";41.echo "<p>[ <a href='formupload.php'>Upload</a> ] [ <a href='list.php'>Daftar File</a> ] [ <a href='logout.php'>Logout</a> ]</p>";42. 43.// konfirmasi44. 45.echo "<p>File ".$fileName." telah terupload</p>";46. 47.?>list.php
01.<?php02. 03.session_start();04. 05.include "cek.php";06. 07.// koneksi ke mysql08.mysql_connect('dbhost','dbuser','dbpass');09.mysql_select_db('dbname');10. 11.// membaca username yang disimpan dalam session12.$username = $_SESSION['username'];13. 14.echo "<h1>Anda login sebagai : ".$username."</h1>";15.echo "<p>[ <a href='formupload.php'>Upload</a> ] [ <a href='list.php'>Daftar File</a> ] [ <a href='logout.php'>Logout</a> ]</p>";16. 17.echo "<h2>Daftar File Anda</h2>"; 18. 19.// query untuk mencari file yang telah diupload milik si user yang sedang login20.$query = "SELECT * FROM upload WHERE username = '$username'";21. 22.$hasil = mysql_query($query);23. 24.// menampilkan nama-nama file yang telah diupload si user yang sedang login25.echo "<ul>";26.while ($data = mysql_fetch_array($hasil))27.{28. echo "<li><a href='download.php?id=".$data['id']."'>".$data['name']."</a> (<a href='delete.php?id=".$data['id']."'>x</a>)</li>";29.}30.echo "</ul>";31. 32.?>Bagaimana script download.php nya? trus bagaimana idenya supaya file tersebut hanya berhak didownload oleh user yang telah menguploadnya atau yang berhak? ya… konsepnya kita cari dulu nama username pemilik file yang akan didownload dalam database. Selanjutnya kita cocokkan username pemiliknya dengan username yang sedang login. Jika sama atau cocok, maka bolehlah file tersebut didownload. Jika tidak, maka tolak mentah-mentah
download.php
01.<?php02. 03.session_start();04. 05.// sisipkan cek.php untuk keamanan06.include "cek.php";07. 08.// koneksi ke mysql09.mysql_connect('dbhost','dbuser','dbpass');10.mysql_select_db('dbname');11. 12.// membaca nilai ID file yang berasal dari link download.php?id=...13.$id = $_GET['id'];14. 15.// membaca username yang sedang login melalui session16.$username = $_SESSION['username'];17. 18.// query untuk mencari data file yang akan didownload dalam database19.$query = "SELECT * FROM upload WHERE id = $id";20. 21.$hasil = mysql_query($query);22.$data = mysql_fetch_array($hasil);23. 24.// mencocokkan username pemilik file dengan username yang sedang login25.if ($username == $data['username'])26.{27. // bila usernamenya cocok maka file boleh didownload28. header("Content-Disposition: attachment; filename=".$data['name']);29. header("Content-length: ".$data['size']);30. 31. header("Content-type: ".$data['type']);32. 33. echo $data['content'];34.}35.else36.{37. // bila tidak sama maka file tidak boleh didownload38. echo "<h1>Anda tidak berhak mengakses file</h1>";39.}40.?>delete.php
01.<?php02. 03.session_start();04. 05.include "cek.php";06. 07.// koneksi ke mysql08.mysql_connect('dbhost','dbuser','dbpass');09.mysql_select_db('dbname');10. 11.// membaca id file yang akan dihapus12.$id = $_GET['id'];13. 14.// membaca username yang sedang login15.$username = $_SESSION['username'];16. 17.// mencari username pemilik file yang akan dihapus18.$query = "SELECT username FROM upload WHERE id = $id";19.$hasil = mysql_query($query);20.$data = mysql_fetch_array($hasil);21. 22.// mencocokkan username pemilik file dengan username yang sedang login23.if ($username == $data['username'])24.{25. // jika cocok maka hapus file26. $query = "DELETE FROM upload WHERE id = $id";27. mysql_query($query);28. 29. echo "<h1>Anda login sebagai : ".$username."</h1>";30. echo "<p>[ <a href='formupload.php'>Upload</a> ] [ <a href='list.php'>Daftar File</a> ] [ <a href='logout.php'>Logout</a> ]</p>";31. 32. echo "<p>File telah dihapus</p>";33.}34.else35.{36. // jika tidak cocok maka tolak37. echo "<h1>Maaf Anda tidak berhak menghapus file ini</h1>";38.}39. 40.?>logout.php
01.<?php02. 03.session_start();04. 05.// menghapus session06.session_destroy();07.echo "<h1>Anda sudah logout</h1>";08. 09.?>Script di atas sudah melalui tahap pengujian dan dipastikan 100% dapat berjalan dengan normal. Bila Anda mencoba dan mengalami kesalahan atau berjalan tidak normal maka dipastikan kesalahan ada pada Anda. Coba cek kembali script yang Anda buat. Bila kesalahan masih berlanjut, maka downloadlah script di bawah ini.
http://www.ziddu.com/download/17764689/uploaddownload.zip.html

Sabtu, Desember 10, 2011
Dyan123
Posted in: 

0 komentar:
Posting Komentar