Ide Membuat Script Upload Download File Dengan Batasan Hak Akses
May 3rd, 2009 | by rosihanari |
Cetak Artikel Ini
Wah… bingung nih mau ngasih judul artikel yang satu ini. Tapi mudah-mudahan Anda yang membacanya tidak bingung ya..
Maksud dari judul di atas adalah bagaimana ide membuat aplikasi untuk keperluan upload dan download file, namun dengan disertai pembatasan hak akses. Misalkan user A mengupload sebuah file. Nah… file ini hanya boleh didownload oleh si A. Bila ada user lain yang mencoba mendownload atau menghapus file tersebut maka tidak diperbolehkan.
Aplikasi ini juga nantinya disertai semacam autentifikasi artinya tidak sembarangan orang bisa upload file, melainkan hanya user-user tertentu saja yang berhak.
Artikel ini merupakan request dari member saya, mas Ario Wibowo.
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) )
Pada tabel ‘upload’, field ID digunakan untuk memberikan nomor ID dari setiap file supaya unik (pembeda tiap file) karena bisa jadi nama file yang diupload user adalah sama. Field ‘name’ terkait dengan nama file yang diupload, ‘type’ terkait dengan jenis file apakah berupa image, text file atau dokumen dll, ‘size’ menyatakan ukuran file, dan ‘content’ untuk menyimpan isi file (di sini menggunakan blob atau mediumblob). Nah.. kemudian field ‘username’ digunakan untuk memberikan informasi kepemilikan dari file, milik user siapakah file tersebut.
Selanjutnya untuk sekedar mencoba, Anda bisa sekalian tambahkan beberapa user
INSERT INTO `user` VALUES ('a', 'pass1');
INSERT INTO `user` VALUES ('b', 'pass2');
Catatan: dalam contoh ini sengaja saya tidak mengenkripsi password login masing-masing username supaya Anda bisa mencoba. Namun.. lebih baik jika Anda gunakan enkripsi.
Langkah kedua, kita siapkan form login untuk user
index.htm
<h1>Login User</h1> <form method="post" action="login.php"> <table> <tr><td>Username</td><td><input type="text" name="user"></td></tr> <tr><td>Password</td><td><input type="password" name="pass"></td></tr> <tr><td></td><td><input type="submit" name="submit" value="Submit"></td></tr> </table> </form>
Langkah kedua, kita bisa buat script untuk memproses loginnya
login.php
<?php
// koneksi ke mysql
mysql_connect('dbhost', 'dbuser', 'dbpass');
mysql_select_db('dbname');
// membaca username dan password dari form login
$username = $_POST['user'];
$password = $_POST['pass'];
// mencari data user yang login tujuannya untuk mendapatkan password dari database
$query = "SELECT * FROM user WHERE username = '$username'";
$hasil = mysql_query($query);
$data = mysql_fetch_array($hasil);
// mencocokkan password user dari database dengan password dari form
if ($password == $data['password'])
{
// jika kedua password sama, maka login berhasil
// simpan username ke dalam session
session_start();
$_SESSION['username'] = $username;
echo "<h1>Login Sukses</h1>";
echo "<h2>Anda login sebagai : ".$username."</h2>";
// tampilkan menu user
echo "<p>[ <a href='formupload.php'>Upload</a> ] [ <a href='list.php'>Daftar File</a> ] [ <a href='logout.php'>Logout</a> ]</p>";
}
else
{
// jika kedua password tidak cocok, maka login gagal
echo "<h1>Maaf login gagal</h1>";
}
?>
Perhatikan script di atas! Terdapat 3 buah menu yang akan tampil begitu user berhasil login. Menu ‘upload’ untuk melakukan proses upload file, ‘daftar file’ untuk melihat daftar file apa saja yang telah diuploadnya, dan ‘logout’ untuk proses logout. Nah.. di antara ketiga menu tersebut, menu ‘upload’ yang diarahkan ke script ‘formupload.php’ dan ‘daftar file’ yang diarahkan ke script ‘list.php’ ini hendaknya diproteksi supaya hanya bisa diakses oleh user yang telah terdaftar dalam database saja. Maksudnya, kedua script tersebut haruslah hanya bisa diakses oleh user yang telah melakukan login dengan sukses saja. Sehingga untuk keperluan ini, kita harus mengatur strategi supaya user nakal tidak bisa mengakses kedua script tersebut tanpa login (by pass)… he.. 3x kayak mau perang saja pake strategi segala
Nah… untuk mencegah ada penyusup yang masuk tanpa login, kita buat dulu script untuk pengamanannya.
cek.php
<?php
session_start();
if (!isset($_SESSION['username']))
{
echo "<h1>Maaf Anda belum login</h1>";
exit;
}
?>
Ide dari script pengaman di atas adalah dengan mengecek keberadaan session dengan nama ‘$_SESSION['username']‘. Bila login berhasil, maka session tersebut ada (perhatikan kembali script login.php). Namun bila user mencoba masuk tanpa login, maka keberadaan session ini tidak ada. Sehingga bila session tersebut dideteksi tidak ada, maka ditolak dengan pesan ‘Maaf Anda belum login’.
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
<?php
session_start();
include "cek.php";
// membaca nama user yang tersimpan dalam session
$username = $_SESSION['username'];
echo "<h1>Anda login sebagai : ".$username."</h1>";
echo "<p>[ <a href='formupload.php'>Upload</a> ] [ <a href='list.php'>Daftar File</a> ] [ <a href='logout.php'>Logout</a> ]</p>";
echo "<p>Silakan upload file</p>";
?>
// form untuk upload
<form method="post" enctype="multipart/form-data" action="upload.php">
<table>
<tr><td><input type="hidden" name="MAX_FILE_SIZE" value="2000000">
<input name="userfile" type="file">
</td>
<td><input name="upload" type="submit" value="Upload">
</td>
</tr>
</table>
</form>
Perhatikan pada tag <input name=”userfile” type=”file”>. Tag ini digunakan untuk input file yang akan diupload. Tag ini diberikan nama komponen ‘userfile’. Nama komponen ini selanjutnya akan digunakan dalam script proses uploadnya.
upload.php
<?php
session_start();
// untuk keamanan, kita juga includekan cek.php
include "cek.php";
// membaca nama file
$fileName = $_FILES['userfile']['name'];
// membaca nama file temporary
$tmpName = $_FILES['userfile']['tmp_name'];
// membaca size file
$fileSize = $_FILES['userfile']['size'];
// membaca tipe file
$fileType = $_FILES['userfile']['type'];
// membaca username yang disimpan dalam session
// username ini sekaligus menyatakan informasi pemilik file
$username = $_SESSION['username'];
// langkah membaca isi file yang diupload
$fp = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);
fclose($fp);
// koneksi ke mysql
mysql_connect('dbhost','dbuser','dbpass');
mysql_select_db('dbname');
// query SQL untuk menyimpan file ke database disertai username pemiliknya
$query = "INSERT INTO upload (name, size, type, content, username)
VALUES ('$fileName', '$fileSize', '$fileType', '$content', '$username')";
mysql_query($query);
echo "<h1>Anda login sebagai : ".$username."</h1>";
echo "<p>[ <a href='formupload.php'>Upload</a> ] [ <a href='list.php'>Daftar File</a> ] [ <a href='logout.php'>Logout</a> ]</p>";
// konfirmasi
echo "<p>File ".$fileName." telah terupload</p>";
?>
Setelah kita membuat script untuk proses upload, berikutnya kita buat script list.php untuk menampilkan daftar file yang telah diupload
list.php
<?php
session_start();
include "cek.php";
// koneksi ke mysql
mysql_connect('dbhost','dbuser','dbpass');
mysql_select_db('dbname');
// membaca username yang disimpan dalam session
$username = $_SESSION['username'];
echo "<h1>Anda login sebagai : ".$username."</h1>";
echo "<p>[ <a href='formupload.php'>Upload</a> ] [ <a href='list.php'>Daftar File</a> ] [ <a href='logout.php'>Logout</a> ]</p>";
echo "<h2>Daftar File Anda</h2>";
// query untuk mencari file yang telah diupload milik si user yang sedang login
$query = "SELECT * FROM upload WHERE username = '$username'";
$hasil = mysql_query($query);
// menampilkan nama-nama file yang telah diupload si user yang sedang login
echo "<ul>";
while ($data = mysql_fetch_array($hasil))
{
echo "<li><a href='download.php?id=".$data['id']."'>".$data['name']."</a> (<a href='delete.php?id=".$data['id']."'>x</a>)</li>";
}
echo "</ul>";
?>
Pada daftar file yang tampil, si user dapat mendownload file nya dengan mengklik nama filenya atau menghapusnya dengan mengklik tanda X yang ada di sebelah kanan nama file. Untuk proses download, linknya akan diarahkan ke script ‘download.php’ dan hapus file di arahkan ke ‘delete.php’. Kedua link tersebut ditambahkan parameter ‘?id=…’ yang digunakan untuk mengidentifikasi file apa yang akan didownload atau dihapus, mengingat pembeda antar file adalah ID nya.
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
<?php
session_start();
// sisipkan cek.php untuk keamanan
include "cek.php";
// koneksi ke mysql
mysql_connect('dbhost','dbuser','dbpass');
mysql_select_db('dbname');
// membaca nilai ID file yang berasal dari link download.php?id=...
$id = $_GET['id'];
// membaca username yang sedang login melalui session
$username = $_SESSION['username'];
// query untuk mencari data file yang akan didownload dalam database
$query = "SELECT * FROM upload WHERE id = $id";
$hasil = mysql_query($query);
$data = mysql_fetch_array($hasil);
// mencocokkan username pemilik file dengan username yang sedang login
if ($username == $data['username'])
{
// bila usernamenya cocok maka file boleh didownload
header("Content-Disposition: attachment; filename=".$data['name']);
header("Content-length: ".$data['size']);
header("Content-type: ".$data['type']);
echo $data['content'];
}
else
{
// bila tidak sama maka file tidak boleh didownload
echo "<h1>Anda tidak berhak mengakses file</h1>";
}
?>
Konsep yang hampir sama juga kita terapkan dalam delete.php. Artinya bahwa mekanisme pencocokan username pemilik file dengan username yang sedang login juga harus dilakukan sebelum file dihapus.
delete.php
<?php
session_start();
include "cek.php";
// koneksi ke mysql
mysql_connect('dbhost','dbuser','dbpass');
mysql_select_db('dbname');
// membaca id file yang akan dihapus
$id = $_GET['id'];
// membaca username yang sedang login
$username = $_SESSION['username'];
// mencari username pemilik file yang akan dihapus
$query = "SELECT username FROM upload WHERE id = $id";
$hasil = mysql_query($query);
$data = mysql_fetch_array($hasil);
// mencocokkan username pemilik file dengan username yang sedang login
if ($username == $data['username'])
{
// jika cocok maka hapus file
$query = "DELETE FROM upload WHERE id = $id";
mysql_query($query);
echo "<h1>Anda login sebagai : ".$username."</h1>";
echo "<p>[ <a href='formupload.php'>Upload</a> ] [ <a href='list.php'>Daftar File</a> ] [ <a href='logout.php'>Logout</a> ]</p>";
echo "<p>File telah dihapus</p>";
}
else
{
// jika tidak cocok maka tolak
echo "<h1>Maaf Anda tidak berhak menghapus file ini</h1>";
}
?>
Yang terakhir, jangan lupa buat script logout.php untuk proses logoutnya. Konsep logout adalah dengan menghapus session yang digunakan untuk menyimpan username yang login.
logout.php
<?php session_start(); // menghapus session session_destroy(); echo "<h1>Anda sudah logout</h1>"; ?>
Perhatian:
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.
[ Download Script ]
Mudah bukan membuatnya? Selamat mencoba ya…
Anda ingin mendownload beberapa tool programming 100% gratis?
Silakan download di FREE PROGRAMMING TOOLS.
atau ingin berdonasi untuk pengembangan blog ini cukup dengan $1 via Paypal?
Beberapa artikel terkait
- Ide Pembuatan Script PHP Upload Download File Via Folder
- Script Multiple File Upload Dengan PHP
- Cara Memfilter Extension File Upload dengan PHP
- Script Cari Data File Yang Terupload Ke MySQL
- Edit File CSS Berbasis File Teks dengan PHP
- Script Proses Edit File Yang Telah Diupload Ke Database MySQL
- Membuat Script PHP untuk Kompresi File ZIP
- Script Upload Video dan Video Player di Web dengan PHP dan MySQL
- Membuat Script PHP untuk Restore Database MySQL
- Membuat Script Random Image dengan PHP
Share this article on:
Kata kunci: download - script - upload -





Terima kasih untuk scriptnya, bolehkah saya meminta link untuk cara menginstal scripnya
to phone tutorial: Kan link scriptnya sudah saya cantumkan di bagian paling bawah mas?http://www.ziddu.com/download/4590204/uploaddownload.zip.html
Om apa script di atas juga bisa membatasai kapasitas download? misalnya aja di di sebuah warnet hanya bisa mendownload sebesar 200M, lewat dari situ eror. bagaimana cara membatasinya yah??
o ya
bisa ajarkan buat halaman login, register, dan logout g ?
Tolong donk om??
heheheheh
to arie: downloadnya dari mana mas? dari internet atau dari local server di warnet tsb? lho bukankah artikel di atas sudah ada fitur login dan logoutnya? Selain di atas, silakan baca http://blog.rosihanari.net/ide-membuat-sistem-login-aplikasi-multi-user/
Thanks bro atas artikelnya, tapi kalo boleh gue minta artikel download and upload khusus file pdf aja.
thanks all
makasih bro atas artikelnya,
gue sih carinya upload dan download file pdf aja gmn caranya ya?
apa sama seperti ini
thank all,
to hieroe: Caranya persis di atas, hanya nanti pas proses upload ada pengecekan ekstensi dari filenya apakah PDF atau tidak. Jika PDF maka simpan di database, jika tidak maka tolak.
websitenya bagus banget dan banyak memberikan masukan yang sangat berguna bagi saya dalam pembuatan tugas akhir saya …
mas, tolong publish bagaimana caranya streaming file avi di windows dengan media playernya adalah flash.
trimakasih sebelumnya.
to ria: maaf saya belum ada ide untuk membuat streaming
Mas mau tanya….???
Gmana kl buat form untuk menginputkan daftar isi buku trus covernya skalian, kemudian bisa disearch untuk ditampilkan.
pak…..
download file nya di ziddue dapat uang ya? gimana cara nya pak?
pak saya minta file mySql yang uda di buat sama bapak. saya uda ikut buat mySql nya tapi erro pada Size nya…
kirimin ya pak file mysql ke email saya
to world: panduan ziddu nya bisa dibaca di http://blog.rosihanari.net/tips-menambah-pendapatan-bagi-anda-yang-suka-menulis/. Query SQL yang saya gunakan untuk membuat aplikasinya sama seperti di atas kok. Error size nya gimana?
Walaupun sedikit rumit tapi thank’s yach atas informasinya.
Postingan terakhir si Architecture and Photography di blognya: Automatic Backlinks
kalo mau bikin skrip batesin limit upload gmn? jadi misal max. ukuran yg di upload gak boleh lebih dari 1MB…
to creativebrain: anda bisa set komponen form uploadnya menjadi <input type=”hidden” name=”MAX_FILE_SIZE” value=”1000000″>
Thanks a bunch Mas… ngebantu banget tuk saya yg baru belajar PHP sekalian coba2 bikin aplikasi2 kecil.
Smoga berkah..
Kenapa saat di klik File yg akan di Download, malah File download.php yang ter download bukan File yg ada di Database??
mohon bantuannya,..
Thanks,..
Pak, terima kasih atas tutorialnya. Saya mau tanya untuk mengembangkan, jika yang upload adalah misalnya saya sebagai pemilik situs sedangkan yang boleh download hanya user tertentu saja, misal 1 atau 2 user saja, gimana script untuk memfasilitasi itu ya pak. Makasih..
Salam
to sutardi: kalau begitu anda tambahkan satu field lagi dalam tabel user, misal ‘hakDownload’. Nanti isinya 1 = boleh download, atau 0 = tidak boleh download., atau boleh dengan notasi yang lain (tidak harus 0 dan 1). Status user inilah yang nanti bisa diatur oleh admin. Dan nanti implementasinya adalah pada script download.php, sebelum proses download dicek terlebih dahulu apakah username yang mau download memiliki status 1 atau tidak, jika ya maka boleh download. Jika tidak, maka tidak boleh download.
wah bikin pusing….scriptnya
to wds: he 3x jangan hanya dilihat mas. Kalau cuman dilihat ntar pusing, tapi dinikmatinya dengan mempelajari idenya.
Mas blognya sangat bermanfaat buat saya.
saya banyak belajar dari blog anda.
Tapi saya punya masalah membuat trik php pada blog saya…
Pertanyaannya: script phpnya bisa digunakan umtuk blog ga?. apa download script yang anda kasih masih mentah?, dan apa masih perlu ada yang sata ganti atay tambahkan lagi data scriptnya.
saya mau gunakan untuk blog
.-= Deni´s last blog ..Lagu-lagu saykoji =-.
saya minta ijin belajar di situs ini ya?
maklum ga sempet kuliah ni pak dosen…
cara belajar yang benar gimana ya? mohon bimbingan, thx
Pak ko upload file type doc dan excel gak bisa
to joker: bisa mas, file apapun bisa, asal size filenya tidak melebihi MAX_SIZE_UPLOADnya
betul pak ternyata bisa maaf, terimakasih tetapi untuk update file type blob nya ko agak rumit ya….bagaimana ya pak
Terima kasih Pak, saya sudah mencoba dan saya upload disitus saya http://www.e-pembayaran.com/upload. Ada sedikit pengembangan yang saya inginkan pak, yakni pada halaman login hanya user a saja yang ada menu upload, sedang user lainnya hanya menu download saja.
Terus dihalaman login user a dia bisa mengatur siapa saja yang bisa mendownload file yang telah dia upload.
Terima kasih.
.-= Sutardi´s last blog ..SEGERA DILUNCURKAN FASILITAS BARU … =-.
Satu lagi pak, maaf, saya juga sudah kembangkan di list.php sehingga ada data lain yang bisa kita tampilkan, namun saya juga ingin menampilkan tanggal dan waktu upload, dan juga ingin ditampilkan dalam sebuah tabel kemudian diurutkan berdasarkan waktu upload (yang diupload terakhir ada di atas)
Terima kasih atas bantuannya pak.
Salam
qlo mau bikin login yg mirip seperti facebook gmn ya ?
jd qlo login dgn nama si A akan keluar data milik si A saja, trus qlo login dengan nam si B akan keluar data milik si b…
thks b4
to vino: begitu login sukses, simpan userid nya dalam session, lalu setiap kali mau meload data si userid, gunakan query untuk meload data menggunakan userid yang tersimpan dalam session tsb.
to sutardi: kalau begitu silakan tambahkan field tabel untuk menyimpan informasi tanggal dan waktunya. Bisa anda gunakan tipe data DATETIME. Nah, tanggal dan waktu upload itu diperoleh dengan perintah PHP -> $tgljam = date(“Y-m-d H:i:s”); barulah $tgljam tsb disimpan ke tabel database.
Script untuk ngecek login saya bikin seperti ini:
= 1 )
{
$_SESSION['username'] = $username;
header(“location: home.php”);
}
else
header(“location: logineror.php”);
?>
Di bagian mana yg saya harus ganti/tambah ?
Mohon pencerahannya.
to vino: namanya si user apakah sudah ada di db? kalo ada, tinggal gunakan query saja untuk menampilkannya. Querynya menggunakan session si user
$user = $_SESSION['username'];
$query = “SELECT namauser FROM user WHERE username = ‘$user’”;
.
.
dst
that’s all…
Terima kasih pak bwt ilmunya. Sangat membantu saya. Oy pak, bagaimana caranya membuat sebuah link agar halaman tersebut bisa di print ? dengan PHP tentunya.
terima kasih pak..
infonya sgt bermanfaat untuk mhsiswa sprti saya.
kalo boleh tanya pak.
aplikasi saya lg butuh untuk memastikan user hrs download dulu baru melakukan aksi selanjutnya, misal isi form.
tp hrs dipastikan dulu user sudah download file..
kira2 buatnya seperti apa ya pak..
thx sebelumnya
.-= hio´s last blog ..Modul Proposal Bagian 1 =-.
to hio: berarti pada script untuk download itu perlu tambahan bagian script untuk mencatat apakah user tadi sudah menjalankan script downloadnya atau belum. Misal kalo sudah menjalankan script download, maka nanti akan diberikan nilai 1 dan nilai ini akan disimpan di database. Jika belum, maka masih bernilai 0 dalam databasenya. Lalu dicek, apakah nilainya 0 atau 1. Jika masih 0, maka belum bisa menjalankan proses selanjutnya.
to vian: Nah… silakan kunjungi link http://www.hypergurl.com/printpage.html untuk lebih jelasnya mas. Mudah2an menjawab pertanyaan Anda.
terima kasih sblmnya..
kalo boleh tanya lg pak.
misal metode itu berhasil.lalu tiba2 user menekan tombol cancel download.
brati kan filenya blm msk ke komputer user.
tp flag didatabase sudah berubah jadi 1 misalnya.
kalo untuk ngecek bahwa file itu sudah bnr2 selesai didownload idenya seperti apa ya pak?
atau ada semacam validasi gt?
kalo udah mentog ya saya pake cara itu pak
terima kasih sblmnya pak..
responnya cpt bgd dr bapak
.-= hio´s last blog ..Modul Proposal Bagian 1 =-.
makasih pak atas ilmunya
setelah saya pergunakan ,, and sukses ,, tp setelah upload saya kok ga bisa downloadnya lagi ya
setiap saya klik filenya ga konect ma databasenya
padahal uda bener semua pak
malah adress not found
mohon bantuannya pak
to dony: coba dicek lagi mas scriptnya. Siapa tahu ada link nama script yang salah. Jangan yakin dulu bahwa Anda sudah benar semua, karena komputer tidak akan pernah berbohong
wao keren bro
gua jg lagi belajar php nich sob ,btw gua ada nemu ini nich sob (“$php_self()”); kok ga bisa jalan ya bro ?
.-= Juliawan´s last blog ..Pengalaman Waktu Inisiasi Pertama Katekumen =-.
to juliawan: apa itu php_self() kok itu semacam function? Biasanya kalo php self itu ada dalam bentuk variabel $_SERVER['PHP_SELF']; perintah itu akan menghasilkan nama script itu sendiri.
mas, saya pernah buat file buat galery photo
yg upload n langsung ditampilin
upload berhasil, tp tampilannya tdk bisa berjajar 3. jd cm bisa satu photo satu baris, da t selanjutnya dibaris ke dua dan seterusnya
caranya gmn yg mas biar bisa satu baris tu 3 photo baru turun ke baris selanjutnya
terima kasih
to muh. fitrah: konsepnya sama seperti artikel tentang membuat barcode dengan php yang pernah saya tulis mbak.
mas,,klo kita upload file ke cpanel trus dikasih direct link buat langsung di download user gmna script nya??
makasih mas
@pendekar: mmm… itu bisa saja mas, tapi untuk membatasi hak akses pada setiap file tidak bisa (bisa sih tapi ribet). Kalau dengan script seperti yang saya jelaskan di atas, akan mudah dalam pembatasan hak akses karena setiap kali upload, informasi ttg properti dari file itu tersimpan ke dalam databasenya, seperti nama file, size, dll. Selain itu informasi user yang berhak akses file itu pun juga tersimpan di databasenya sekaligus. Kalo Anda upload via cpanel, mending direktori atau foldernya saja yang diprotect lalu Anda buat hak akses pada folder itu pada user tertentu saja. Fitur ini ada di CPANEL juga kok.
Urgent…..
Mas Rosihan Ari,
ato siapa saja yang ada di forum ini yang bisa bantu ….
saya ingin upload file sebesar 50Mb, tapi localhost saya tidak mengijinkannya. Nah gimana caranya untuk merubah max_filesize untuk upload supaya server local komputer saya, dalam hal ini localhost, bisa menerima file sampai sebesar, katakanlah 500Mb atau 1 Gb dalam sekali upload. Jadi saya upload ke local server dulu baru tar saya ftp ke online.
Thanks
@mega: coba cari file yang namanya php.ini di komputer Anda. Lalu cari
post_max_size = …
dan
upload_max_filesize = …
Isikan nilai yang cukup besar pada keduanya, misalnya upload_max_filesize = 500M
lalu restart apachenya.
wew keren memank mas ini..
lgi2 habis googling, timbul disini.. dan ternyata google gak bohong.. hehe
masalah upload, itu memang harus di simpan di mysql? sya pernah baca php hanya mengcopy kan saja file yg akan di upload, lalu php “bikin” sendiri file yg serupa (yg jdi masalah, sya lupa bca dimana
)..
mohon pencerahan nya..
@rosihan, Wah thanks alot ya. Udah berhasil. Nah sekarang saya pengen synchronize folder / website localhost saya dengan yang di internet, ada cara atau trik buat melakukan sinkron otomatis ya Mas Rosihan?
Thanks
folder untuk menampung file upload sepertinya belum ada pak, sehingga ketika proses upload selesai, di database bisa tampil, tetapi ketika filenya dicari di explorer ndak ada.
demikian juga proses downloadnya, ketika diklik download, yang tampil bukan file yang dikehendaki, tetapi file download.php itu sendiri.
sepertinya script di atas masih harus diperbaiki pak…..
@ommet: lho itu memang file nya tidak diupload ke folder mas, tapi ke databasenya. Itu Anda pakai IE ya? Kalau Firefox sepertinya bisa deh.
Pak Ari, saya sudah mendownload dan sudah di upload di web http://www.polkomzone.org/upload
untuk proses login masih mengalami kegagalan karena mungkin koneksi ke database.. mohon pencerahannya untuk koneksi ke database ini pak.
Terim kasih
@amir: sepertinya bukan masalah koneksi di db nya mas, karena tidak error apapun terkait koneksinya. Sepertinya kegagalannya pada pada proses login, kemungkinan di logikanya, sehingga login dianggap gagal terus.
Saya sudah berhasil upload dan download, tapi ada masalah ketika upload file yang lebih dari 1 Mega. Bisa ndak mas, misalnya uploadnya ke folder, tapi yang bisa download hanya yang login saja. kayak rapidshare gitu…
@arifin: silakan buka file php.ini di komputer Anda mas. Lalu cari post_max_size = … dan upload_max_filesize = … isikan keduanya dengan nilai yang besar, misal 200M. Lalu restart apachenya.
hehehe, sipp..
sudah bisa Mas Ari
Kalau untuk webhosting gimana mas?
soalnya hosting gratisan sana max_upload nya cuman 2 mega, bisa kita rubah ndak ya mas?
Makasih pencerahannya
@arifin: kalo mengubah max_upload_size itu harus admin nya mas. User tidak berhak mengubahnya. Dulu pernah pengalaman di hosting berbayar saya, si admin saya minta mengubah setting konfig di php.ini nya mau tuh.
makasih, saya akan pelajari dulu mas, baru saya akan coba.
semoga berhasil
.-= arbya´s last blog ..Rasulullah SAW. Meramal?? =-.
tks pak.. tas informasinyaa.. sekali aku coba tuh tutorial.. lgsg bisa…
kalo bisa minta tutorial scrip tuk chatingan di web
tks atas infonya..
Alhamdulillah pak sudah bisa digunakan. Izin untuk mengembangkan ya pak. Terima kasih
@amir: silakan saja mas amir…. it’s free to develop..
@arifin: kalo mengubah max_upload_size itu harus admin nya mas. User tidak berhak mengubahnya. Dulu pernah pengalaman di hosting berbayar saya, si admin saya minta mengubah setting konfig di php.ini nya mau tuh.
=================================
hehehehe, ini pake hosting gratis luarnegri mas, bingung ngomongya. Tapi gpp mas, saya akali upload pake ftp dulu terus saya pake skrip upload via url untuk memasukkan ke databasenya.
Alhamdulillah sekarang saya udah bisa bikin situs file sharing dengan pengamanan link (menyembunyikan url file asli, karena file tidak disimpan dalam database tapi di folder biasa).
ini contohnya (maaf masih niru ziddu) :
http://peluangusaha.net76.net/files/file.php?id=73
Terima kasih banyak atas INSPIRASINYA mas…
.-= Arifin´s last blog ..STRANGE MANSION MANGA =-.
@arifin: wah diakali itu jg gak papa mas…. boleh ditiru tuh
Good luck deh dengan file sharingnya…
maaf om….bagaimana cara mendapatkan file yang telah di upload dengan tidak memasukan username sebagai verifikasi.
karna web yang saya buat bisa didownload secara mudah tanpa harus meng include cek.php dan username.
@balkiss: maaf mas, saya belum paham pertanyaannya
mas saya mw tanya. bagaimana membuat file/script untuk edit gambar setelah gambar tersebut di upload?
trima kasih.
@arief: edit gambar maksudnya mengupdate file gambar dengan file yang lain? caranya hampir sama dengan upload gambar (INSERT), namun nanti query nya adalah UPDATE.
Makasih mas….
sekarang saya ada problem lain yaitu bagaimana cara untuk menghapus file yang telah di upload sebelumnya (auto delete).
saya punya web yang setiap user harus di sertai foto masing-masing. nah bagaimana menghapus foto yang sebelumnya jika user merubah foto frofile’nya??
@arief: kan file foto dari script di atas diupload dan disimpan ke database mas? sehingga bila file foto diupdate otomatis data yang lama tertimpa dengan data foto yang baru. So.. no problem. Kecuali bila file yang diupload tidak disimpan ke db, tapi di folder.
ok
trima kasih banyak mas.
jaya terus mas.
maaf mas saya mau bertanya lagi. tapi agak melenceng dari judul post nya.
klo script dan cara membuat pop-up menu bagaimana ya? (css atau javascript untuk mempercantik tampilan web)
trima kasih
maaf mas. setelah saya coba ko gak bisa insert (ga masuk database)
saya pake php5.
trimas kasih
@edi: tidak ada pengaruh pada versi PHP nya mas, karena saya juga pakai PHP 5, mungkin query INSERT Anda yang salah, coba cek lagi nama fieldnya barangkali ada yang salah.
bisa di perjelas ga…
kenapa $content itu harus di fread dulu….
baru di simpen ke database….
soalnya script insert udah ok kok…. pas di coba gagal….
@edi: fread itu untuk membaca isi file, setelah dibaca disimpan ke dalam variabel lalu disimpan ke database.
maap mas, udah tak coba skrip diatas, dan bnar2 teruji, trimkasih. Cman kok nek sy download ditipa file nya keluarnya kok mesti sama ya yaitu file “download.php” bukan file yg sy upload sblumnya (msal sy sdh mengupload file coba.txt).kira2 apanya ya mas yg hrs sy rubah? mohon bantuanya .terimakasih
mas, program untuk downloadnya gak jalan tuh, warning semua; tolong dicheck dong, saya udah ngikutin 100% tapi masih gak jalan juga, untuk yang lainnya jalan ok kok;
terima kasih pak atas artikelnya …
terima kasih ya mas untuk infonyan, sangat membantu saya untuk mengerjakan tugas akhir…. oh iya saya juga sekarang lagi berupaya mencari skrip untuk pembuatan halaman pada web misalnya hal 1,2,3, dan seterusnya, semoga bisa di bantu ya mas…. thanks
@prayogo: itu namanya teknik paging mas…. ada kok di blog ini artikelnya. disearch saja ya…
Makasih atas tutorialnya inilah yg saya cari ! Boleh saya posting di Blog saya?
Tukeran link ya ?
terima kasih atas artikelnya, sangat membantu saya dalam membuat tugas akhir saya.
Salam Kenal mas.
Saya dah coba script di atas tapi pas upload file besar selalu muncul erro seperti ini.
Warning: fopen() [function.fopen]: Filename cannot be empty in /var/www/admin/upload.php on line 27
Warning: fread(): supplied argument is not a valid stream resource in /var/www/admin/upload.php on line 28
Warning: fclose(): supplied argument is not a valid stream resource in /var/www/admin/upload.php on line 30
@abunabiha: memang kalo upload file yang terlalu besar, sekitar 1MB ke atas, proses nya akan gagal mas. Sebaiknya untuk file besar jangan diupload ke database namun ke folder di server saja.
untuk mlewati(mnembus) batasan hak akses ini gmna om?
byar g perlu login2 klo pgen download.. da ide crackny juga…
sofware…ini..sangat…berguna bagi anak…rpl?
maaf mas .. saya masih bingung dengan script ini.. saya dah ikutin langkah di atas tp untuk data files ko tidak ketemu yah?? salah di mananya mas ..?/ mohon pencerahanya .. terima kasih
naruh kode tersebut diatas dimana kalau di blogspot? sekalian caranya ya mas? trims…
#1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘CREATE TABLE upload (
id int(11) AUTO_INCREMENT,
name varchar(30),
type’ at line 7
ini kenapa ya?
makasiiiiiih muach
Mudah-mudahan yang disajikan di web ini menjadi bermanfaat bagi kita semua. Saya megajukan bagaimana kita membuat Script mencetak layaknya kita ngeprint dikertas dengan hasil yang maksimal. mohon minta scriptnya dan klu bisa langsung masuk ke email saya.terimakasih.
@julianda: itu pake Javascript mbak. Coba digoogling saja dengan kata kunci “javascript print page”
Maaf, script tu masih harus di edit pa langsung pake ya? kalo harus ada yang diedit, bagian mananya?
Trims
@dionly: yang diedit hanya bagian koneksi db nya saja.
Itu Khan Baru Input. Kalo scriptbuat file editnya gimana???. Thx B 4.
terimakasih atas ilmu yang di tulis, dan mohon ijin, blog bapak ane tulis di daftar link pribadiku.
kok hasilnnya sukses terus ya…
padahal scriptnya dah bener…:S
Lah… File yang di upload tersimpan dimana???
pak saya anak baru belajar php, darimana saya harus memulai dan bagaimana caranya agar saya mudah memahami bahasa2 pemograman seperti php
@yulianto: langsung saja mas nyoba2 script yang simpel2. Banyak kan buku2 ttg PHP di Indonesia… modalnya hanya HTML sama logika saja kok
@andy: filenya tersimpan dai database mas
Saya sudah mencoba skrip ini, tp ketika login dengn user dan pass di kosongkan knp bs masuk ya? mohon penjelasan’e … sebelum’e saya ucapkan banyak trima kasih
@aan: coba anda tambahkan logika ini mas: proses pencocokan password sampai dengan selesai itu hanya terjadi jika username dan password tidak kosong.
if (($username != “”) && ($password != “”))
{
// proses pencocokan password
}
else echo “Login gagal”;
mantabs…
Pak saya mau nanya..
caranya membuat komentar ala blog tapi tanpa arikel gimana ya pak?
kalau program upload dari server ke client dengan beda computer, tapi file uploadnya udah didefinsikan jadi tanpa browse,,,gimana scriptnya???
NB:filenya file wav
@eko: filenya yang akan diupload di client atau di server? kalo di client sepertinya gak bisa.
mas saya masih awam dalam hal ini jadi maklumi pertanyaan ini yahh…
ini prtanyaan saya:
form upload ini di berikan untuk user yang telah menjadi member web apa hanya untuk admin?
bila untuk user bagai mana user tersebut bisa tau username & vassword mliknya??
bgitu jg untuk admin dmna admin tersebut bisa tau username $ vass’a??
diserver mas…
kira2 gmana ya scriptnya????
makasih sebelumnya…..
makasih banyak pak….moga jd amal jariah….
mas tolongin dunk, ini tuh di masukan atau di sisipkan kemana ya?
“INSERT INTO `user` VALUES (‘a’, ‘pass1′);
INSERT INTO `user` VALUES (‘b’, ‘pass2′);”
soalnya masih awam banget neh ga ngerti thx ya?
trus waktu saya jalankan upload-downloadnya. pas saya isikan username dan pass nya kok malah ada “maaf login gagal” mohon pencerahannya thx
pak uda bisa, tapi kok ga bisa upload ya?
cara bikin “content mediumblob” bagaimana ya?thx
mas saya sudah coba dan hasilnya di http://blog.e-mm.co.cc/upload/
namun setelah saya coba login selalu gagal apa yg mungkin menyebabkan kegagalan itu??
dan ini mas saya pengen bikin halaman yang di proteksi kata sandi yg telah di tentukan,jadi pas ada user mengklik link menuju hal tersebut ia hrus memasukan sandinya namun tampa register terlebih dahulu
file wav yang diupload ada diserver mas?????
mohon bantuannya!!!!!!!!!
@eko: kok filenya sudah di server ya? itu mah namanya bukan upload mas, cuma kopi file biasa. File di server mau dipindahin ke server juga?
@yanto: kan tinggal diberikan saja di query CREATE TABLE nya mas…
@yanto: perintah tsb ditulis di phpmyadmin pada menu SQL.
iya maksudnya cuma mindah file dari server ke client atau sebaliknya. jadi intinya hanya mindah file dari komputer 1 ke komputer lain. hanya saja file nya adalah file wav.
minta bantuannya!!
pak saia mau nanya..
saia dah coba bikin yang buat link upload dan download itu..
tapi pas bagian daftar filenya ko ga ada list file yang udah di upload ya??padahal saia dah ngikutin scriptnya..udah sama..kesalahn nya dimana ya??
mohon bantuannya
@septi: coba cek lagi scriptnya ya mbak, mungkin ada yang masih salah..
Pak Ari, saya anak TI UNS 07
mau tanya Pak, saya kan sedang membuat website yang memiliki fitur upload dan download, nah saya berniat membatasi akses user yang bisa download hanya yang sudah login.
permasalahannya, knpa ya, file php saya setelah saya upload ke hostingan saya, session_start() nya ga mau jalan? jadi masih bisa di bypass pk URL
@erfan: coba anda kontak adminnya mas, diminta ngecek modul session di php nya dah dijalanin atau belum.
pak punya contoh script buat bikin counter untuk download???
mohon bantuannya
makasih
@septi: pada prinspnya sama seperti web counter mbak, kan biasanya untuk proses download melalui sebuah script, nah tinggal tambahkan bagian script untuk counter itu. Nanti counternya disimpan di database. Setiap ada orang yang akses scirpt tsb (download) maka counternya nambah.
Saya sedang membuat fungsi upload dgn php, di php.ini saya sudah tertulis
upload_max_filesize = 32M
memory_limit = 32M
post_max_size = 16M
tapi kok saya tetap gak bisa upload file pdf yang ukurannya lebih dari 1M ya??
Trus ada cara lain gak?? agar bisa upload file pdf lebih dari 8M atau 10M
Mohon bantuannya. Terimakasih.
asalamualikum…
pa saya da masalah dari menu dowload file yang di upload ke directori.
ex :
nama file yang di direktori “lampiran baru.doc”, pada saat saya pilih menu download, nama file yang terdownload “lampiran” jadi terpisah oleh tanda spasi. tapi file yg terdownload tersebut bisa dibuka di office.
kira2 masalah nya dimana ya pa… ??
o iya..
apa setiap file download harus disertakan deklarasi size dan tipe file ??
terimakasih sebelumnya, maaf merepotkan.
@ismi: kalo upload filenya ke database memang ada limit nya mas, karena tipe blob atau longblob itu ada batasan sizenya. Mending kalo besar filenya, diupload ke folder saja.
@ahmad: sebaiknya sewaktu proses upload, anda hilangkan dulu tanda spasinya mas, sehingga nama file yang terupload benar2 terbebas dari spasi.
jdi mesti dhilangkan dulu spasi nya ya pa…
ada ga sintak php yg digunakan untuk merename nama file yg di upload ke folder/direktori.
agar jika saya mengupload file yang mempunyai nama yg mengandung spasi maka akan merename secara otomatis.
terimakasih sebelumnya,…
saya tugu respon nya pa…
@ahmad: ya gunakan str_replace() saja mas untuk menghapus spasi dari nama file setelah file diupload.
Pak, sy coba upload file yg ukurannya lebih dari 1 MB tidak bisa.
padahal sudah saya ubah menjadi :
mohon bantuannya, terima kasih pak
@eclipse: kalo upload ke database memang gak bisa mas jika filesize nya lebih dari 1 Mb.
Mas, saya sudah berhasil upload filenya … tapi pas download kok ngga bisa … malah negbuka filenya di web bukan tampil download file kaya save as gitu . Jadi intinya download filenya gak jalan. kenapa yah mas ??? makasi
pak sy coba download file 100mb dari localhost tp gak bisa. untuk file kecil2 sih gak masalah. sy download dari folder langsung bukan lewat database. dimana ya masalahnya? apa di apache sy? trm ksh
@dimas: gak bisanya gimana mas? muncul errorkah?
Terima kasih banyak ya.. sangat berguna buat saya.