Dapatkan 'Easy Gammu Installer' - Cara Mudah Install Gammu + Ebook Gammu
Ingin Punya Script SMS Gateway dengan PHP + MySQL?

Dapatkan segera phpSMS V3.0, software SMS Gateway multi fungsi berbasis web buatan saya sendiri untuk keperluan Anda.
[Info Lengkap...]

Ide Membuat Script Upload Download File Dengan Batasan Hak Akses


May 3rd, 2009 | by rosihanari | Cetak Artikel Ini 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…

VN:F [1.9.3_1094]
Rating: 10.0/10 (4 votes cast)
Ide Membuat Script Upload Download File Dengan Batasan Hak Akses, 10.0 out of 10 based on 4 ratings
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


Share this article on:

Kata kunci: download - script - upload -


Ada 137 komentar dalam artikel ini.

  1. Terima kasih untuk scriptnya, bolehkah saya meminta link untuk cara menginstal scripnya

  2. rosihanari says:

    to phone tutorial: Kan link scriptnya sudah saya cantumkan di bagian paling bawah mas?http://www.ziddu.com/download/4590204/uploaddownload.zip.html

  3. arie says:

    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

  4. rosihanari says:

    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/

  5. hieroe says:

    Thanks bro atas artikelnya, tapi kalo boleh gue minta artikel download and upload khusus file pdf aja.
    thanks all

  6. hieroe says:

    makasih bro atas artikelnya,
    gue sih carinya upload dan download file pdf aja gmn caranya ya?
    apa sama seperti ini

    thank all,

  7. rosihanari says:

    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.

  8. ria says:

    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.

  9. rosihanari says:

    to ria: maaf saya belum ada ide untuk membuat streaming

  10. andia says:

    Mas mau tanya….???
    Gmana kl buat form untuk menginputkan daftar isi buku trus covernya skalian, kemudian bisa disearch untuk ditampilkan.

  11. world says:

    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

  12. rosihanari says:

    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?

  13. Walaupun sedikit rumit tapi thank’s yach atas informasinya.

    Postingan terakhir si Architecture and Photography di blognya: Automatic Backlinks

  14. kalo mau bikin skrip batesin limit upload gmn? jadi misal max. ukuran yg di upload gak boleh lebih dari 1MB…

  15. rosihanari says:

    to creativebrain: anda bisa set komponen form uploadnya menjadi <input type=”hidden” name=”MAX_FILE_SIZE” value=”1000000″>

  16. sahl says:

    Thanks a bunch Mas… ngebantu banget tuk saya yg baru belajar PHP sekalian coba2 bikin aplikasi2 kecil.

    Smoga berkah..

  17. Irwan Ahrif says:

    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,..

  18. Sutardi says:

    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

  19. rosihanari says:

    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.

  20. wds says:

    wah bikin pusing….scriptnya

  21. rosihanari says:

    to wds: he 3x jangan hanya dilihat mas. Kalau cuman dilihat ntar pusing, tapi dinikmatinya dengan mempelajari idenya.

  22. Deni says:

    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 =-.

  23. hendri says:

    saya minta ijin belajar di situs ini ya?
    maklum ga sempet kuliah ni pak dosen…
    cara belajar yang benar gimana ya? mohon bimbingan, thx

  24. joker says:

    Pak ko upload file type doc dan excel gak bisa

  25. rosihanari says:

    to joker: bisa mas, file apapun bisa, asal size filenya tidak melebihi MAX_SIZE_UPLOADnya

  26. joker says:

    betul pak ternyata bisa maaf, terimakasih tetapi untuk update file type blob nya ko agak rumit ya….bagaimana ya pak

  27. Sutardi says:

    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 … =-.

  28. Sutardi says:

    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

  29. vino says:

    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

  30. rosihanari says:

    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.

  31. rosihanari says:

    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.

  32. vino says:

    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.

  33. rosihanari says:

    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…

  34. Vian says:

    Terima kasih pak bwt ilmunya. Sangat membantu saya. Oy pak, bagaimana caranya membuat sebuah link agar halaman tersebut bisa di print ? dengan PHP tentunya.

  35. hio says:

    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 :D
    .-= hio´s last blog ..Modul Proposal Bagian 1 =-.

  36. rosihanari says:

    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.

  37. rosihanari says:

    to vian: Nah… silakan kunjungi link http://www.hypergurl.com/printpage.html untuk lebih jelasnya mas. Mudah2an menjawab pertanyaan Anda.

  38. hio says:

    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 :D
    .-= hio´s last blog ..Modul Proposal Bagian 1 =-.

  39. dony says:

    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

  40. rosihanari says:

    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 :-)

  41. Juliawan says:

    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 =-.

  42. rosihanari says:

    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.

  43. Muh. Fitrah says:

    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

  44. rosihanari says:

    to muh. fitrah: konsepnya sama seperti artikel tentang membuat barcode dengan php yang pernah saya tulis mbak.

  45. pendekar says:

    mas,,klo kita upload file ke cpanel trus dikasih direct link buat langsung di download user gmna script nya??

    makasih mas

  46. rosihanari says:

    @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.

  47. Mega says:

    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

  48. rosihanari says:

    @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.

  49. 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 :D )..

    mohon pencerahan nya..

  50. Mega says:

    @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

  51. ommet says:

    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…..

  52. rosihanari says:

    @ommet: lho itu memang file nya tidak diupload ke folder mas, tapi ke databasenya. Itu Anda pakai IE ya? Kalau Firefox sepertinya bisa deh.

  53. amir says:

    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

  54. rosihanari says:

    @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.

  55. Arifin says:

    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…

  56. rosihanari says:

    @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.

  57. Arifin says:

    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

  58. rosihanari says:

    @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.

  59. arbya says:

    makasih, saya akan pelajari dulu mas, baru saya akan coba.
    semoga berhasil
    .-= arbya´s last blog ..Rasulullah SAW. Meramal?? =-.

  60. rino says:

    tks pak.. tas informasinyaa.. sekali aku coba tuh tutorial.. lgsg bisa…

    kalo bisa minta tutorial scrip tuk chatingan di web

    tks atas infonya..

  61. amir says:

    Alhamdulillah pak sudah bisa digunakan. Izin untuk mengembangkan ya pak. Terima kasih

  62. rosihanari says:

    @amir: silakan saja mas amir…. it’s free to develop..

  63. Arifin says:

    @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 =-.

  64. rosihanari says:

    @arifin: wah diakali itu jg gak papa mas…. boleh ditiru tuh :-) Good luck deh dengan file sharingnya…

  65. balkiss says:

    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.

  66. rosihanari says:

    @balkiss: maaf mas, saya belum paham pertanyaannya :-)

  67. arief says:

    mas saya mw tanya. bagaimana membuat file/script untuk edit gambar setelah gambar tersebut di upload?
    trima kasih.

  68. rosihanari says:

    @arief: edit gambar maksudnya mengupdate file gambar dengan file yang lain? caranya hampir sama dengan upload gambar (INSERT), namun nanti query nya adalah UPDATE.

  69. arief says:

    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??

  70. rosihanari says:

    @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.

  71. arief says:

    ok
    trima kasih banyak mas.
    jaya terus mas.

  72. arief says:

    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

  73. edi says:

    maaf mas. setelah saya coba ko gak bisa insert (ga masuk database)
    saya pake php5.

    trimas kasih

  74. rosihanari says:

    @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.

  75. edi says:

    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….

  76. rosihanari says:

    @edi: fread itu untuk membaca isi file, setelah dibaca disimpan ke dalam variabel lalu disimpan ke database.

  77. ega_rocky says:

    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

  78. Yoza Ardiles says:

    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;

  79. saipul says:

    terima kasih pak atas artikelnya …

  80. prayogo says:

    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

  81. rosihanari says:

    @prayogo: itu namanya teknik paging mas…. ada kok di blog ini artikelnya. disearch saja ya…

  82. Habib says:

    Makasih atas tutorialnya inilah yg saya cari ! Boleh saya posting di Blog saya?
    Tukeran link ya ?

  83. jonastasia says:

    terima kasih atas artikelnya, sangat membantu saya dalam membuat tugas akhir saya.

  84. ontagurun says:

    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

  85. rosihanari says:

    @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.

  86. meca says:

    untuk mlewati(mnembus) batasan hak akses ini gmna om?
    byar g perlu login2 klo pgen download.. da ide crackny juga…

  87. reni says:

    sofware…ini..sangat…berguna bagi anak…rpl?

  88. ronny says:

    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

  89. naruh kode tersebut diatas dimana kalau di blogspot? sekalian caranya ya mas? trims…

  90. Lisa says:

    #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?

  91. Lisa says:

    makasiiiiiih muach

  92. julianda says:

    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.

  93. rosihanari says:

    @julianda: itu pake Javascript mbak. Coba digoogling saja dengan kata kunci “javascript print page”

  94. Dionly says:

    Maaf, script tu masih harus di edit pa langsung pake ya? kalo harus ada yang diedit, bagian mananya? :?: :oops:

    Trims :)

  95. rosihanari says:

    @dionly: yang diedit hanya bagian koneksi db nya saja.

  96. Ady says:

    Itu Khan Baru Input. Kalo scriptbuat file editnya gimana???. Thx B 4.

  97. kang rohman says:

    terimakasih atas ilmu yang di tulis, dan mohon ijin, blog bapak ane tulis di daftar link pribadiku.

  98. acik says:

    kok hasilnnya sukses terus ya…
    padahal scriptnya dah bener…:S

  99. Andy says:

    Lah… File yang di upload tersimpan dimana???

  100. yulianto says:

    pak saya anak baru belajar php, darimana saya harus memulai dan bagaimana caranya agar saya mudah memahami bahasa2 pemograman seperti php

  101. rosihanari says:

    @yulianto: langsung saja mas nyoba2 script yang simpel2. Banyak kan buku2 ttg PHP di Indonesia… modalnya hanya HTML sama logika saja kok

  102. rosihanari says:

    @andy: filenya tersimpan dai database mas

  103. Aan says:

    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

  104. rosihanari says:

    @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”;

  105. didit says:

    mantabs…

  106. nova says:

    Pak saya mau nanya..
    caranya membuat komentar ala blog tapi tanpa arikel gimana ya pak?

  107. eko says:

    kalau program upload dari server ke client dengan beda computer, tapi file uploadnya udah didefinsikan jadi tanpa browse,,,gimana scriptnya???
    NB:filenya file wav

  108. rosihanari says:

    @eko: filenya yang akan diupload di client atau di server? kalo di client sepertinya gak bisa.

  109. adeas says:

    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??

  110. eko says:

    diserver mas…
    kira2 gmana ya scriptnya????
    makasih sebelumnya…..

  111. e_one says:

    makasih banyak pak….moga jd amal jariah….

  112. yanto says:

    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

  113. yanto says:

    pak uda bisa, tapi kok ga bisa upload ya?
    cara bikin “content mediumblob” bagaimana ya?thx

  114. ade says:

    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

  115. eko says:

    file wav yang diupload ada diserver mas?????
    mohon bantuannya!!!!!!!!!

  116. rosihanari says:

    @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?

  117. rosihanari says:

    @yanto: kan tinggal diberikan saja di query CREATE TABLE nya mas…

  118. rosihanari says:

    @yanto: perintah tsb ditulis di phpmyadmin pada menu SQL.

  119. eko says:

    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!!

  120. septi says:

    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

  121. rosihanari says:

    @septi: coba cek lagi scriptnya ya mbak, mungkin ada yang masih salah..

  122. erfan says:

    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

  123. rosihanari says:

    @erfan: coba anda kontak adminnya mas, diminta ngecek modul session di php nya dah dijalanin atau belum.

  124. septi says:

    pak punya contoh script buat bikin counter untuk download???
    mohon bantuannya
    makasih

  125. rosihanari says:

    @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.

  126. ismi says:

    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.

  127. ahmad says:

    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.

  128. rosihanari says:

    @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.

  129. rosihanari says:

    @ahmad: sebaiknya sewaktu proses upload, anda hilangkan dulu tanda spasinya mas, sehingga nama file yang terupload benar2 terbebas dari spasi.

  130. ahmad says:

    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…

  131. rosihanari says:

    @ahmad: ya gunakan str_replace() saja mas untuk menghapus spasi dari nama file setelah file diupload.

  132. Eclipse says:

    Pak, sy coba upload file yg ukurannya lebih dari 1 MB tidak bisa.
    padahal sudah saya ubah menjadi :

    mohon bantuannya, terima kasih pak

  133. rosihanari says:

    @eclipse: kalo upload ke database memang gak bisa mas jika filesize nya lebih dari 1 Mb.

  134. Adi says:

    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

  135. dimas says:

    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

  136. rosihanari says:

    @dimas: gak bisanya gimana mas? muncul errorkah?

  137. yusrijal says:

    Terima kasih banyak ya.. sangat berguna buat saya.



Tolong beri komentar donk!

Komentar Anda akan berguna untuk kemajuan blog ini.


Mohon maaf, komentar yang menggunakan email palsu atau komentar bernada negatif atau cemooh secara otomatis akan terhapus karena dianggap spam dan tidak akan tampil dalam daftar komentar.

Dimohon jangan pula memasukkan code program dalam bentuk apapun ke dalam komentar karena akan dianggap spam.

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word