Indonesian (Bahasa Indonesia) translation by Ari Ana (you can also view the original English article) Show
Dalam tutorial ini, saya akan menunjukkan kepada Anda betapa mudahnya membuat sistem penyimpanan file online dengan PHP. Anda akan belajar cara mengunggah file dengan PHP dan mendaftarkannya dengan memindai folder "uploads". PerkenalanPernahkah Anda berharap bahwa Anda memiliki tempat untuk
mengunggah file saat di jalan? Bagaimana jika Anda menggunakan terminal publik atau komputer orang lain dan tidak dapat memasang perangkat lunak pihak ketiga apa pun untuk transfer file? Ada banyak situs file hosting yang sudah ada di sekitar, tetapi dalam tutorial ini saya akan menunjukkan cara membuat sendiri. Inilah yang akan kita buat: Langkah 1 - HTML DasarMari kita mulai. Hal pertama yang kita butuhkan adalah dokumen HTML kosong. Saya menggunakan XHTML 1.0 Transitional dengan char set ISO-8859-1. Jika Anda suka, dan tidak memiliki karakter khusus, Anda dapat mengganti ini dengan char set UTF-8. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> <title>Online file storage</title> </head> <body> </body> </html> Langkah 2 - Menambahkan Formulir Unggahan FileOk, sekarang kita memiliki file HTML dasar, pada dasarnya kita tidak punya apapun :) Jadi mari tambahkan beberapa konten. Saya akan membungkus semua konten dalam elemen DIV untuk membantu memberi gaya halaman dengan CSS. Tag Fieldset dan Legend mungkin agak jarang, tetapi mereka adalah markup yang pasti untuk mengatur konten ke dalam grup. Saya telah menambahkan field kata sandi yang akan kita gunakan untuk mengusir pengunggah yang tidak diinginkan, karena kita tidak ingin orang asing mengisi kuota file kita dengan sampah acak. Perhatikan bahwa berbeda dengan elemen Form harian standar, yang satu ini memiliki enctype yang disetel ke multipart/form-data. Field MAX_FILE_SIZE yang tersembunyi adalah untuk PHP dan menentukan ukuran maksimum (dalam byte) yang dapat kita kirimkan. Namun ini tidak akan menimpa pengaturan MAX_FILE_SIZE di file php.ini, jadi itu akan selalu menjadi salah satu yang menentukan ukuran maksimal. <div id="container"> <h2>Online File Storage</h2> <fieldset> <legend>Add a new file to the storage</legend> <form method="post" action="index.php" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="100000" /> <p><label for="name">Select file</label><br /> <input type="file" name="file" /></p> <p><label for="password">Password for upload</label><br /> <input type="password" name="password" /></p> <p><input type="submit" name="submit" value="Start upload" /></p> </form> </fieldset> </div> Jika kita membuka file di browser, sekarang kita akan memiliki formulir html yang membosankan dan polos. Ini akan mengirimkan konten ke dirinya sendiri tetapi tidak akan tahu apa yang harus dilakukan dengannya. Kita membutuhkan tempat untuk menampilkan file yang telah kita unggah; jadi tambahkan html berikut di dalam div kontainer di bawah fieldset pertama. <fieldset> <legend>Previousely uploaded files</legend> <ul id="menu"> <li><a href="">All files</a></li> <li><a href="">Documents</a></li> <li><a href="">Images</a></li> <li><a href="">Applications</a></li> </ul> <ul id="files"> </ul> </fieldset> Perhatikan bahwa unordered list dengan id "files" adalah kosong. Jangan khawatir tentang itu sekarang karena kita akan mengisi bagian itu dengan file di server. Langkah 3 - Menambahkan CSS dan JSSaya menggunakan jQuery untuk menciptakan kemampuan untuk mengubah visibilitas jenis file tertentu tanpa harus me-refresh halaman. <style type="text/css" media="all"> @import url("style/style.css"); </style> <script src="http://code.jquery.com/jquery-latest.js"></script> Saya memuat jQuery dari sumber eksternal saat runtime. Sekali lagi jika Anda suka, Anda dapat mengubah ini sehingga file diambil dari sumber lokal dengan baris ini. <script type="text/javascript" src="js/jquery-1.3.2.min.js"></script> Memuat file langsung dari code.jquery.com memastikan bahwa kita menggunakan versi terbaru dan menghemat bandwidth kita pada setiap pemuatan halaman, tetapi jika server code.jquery.com akan mati atau terlalu penuh, kita mungkin tidak mendapatkan file-nya ketika kita membutuhkannya. Buat folder baru yang disebut style dan buat file CSS baru di dalamnya dengan nama style.css. Ini akan menjadi file yang memberi tahu browser bagaimana kita ingin halaman itu dilihat. Ada cukup banyak CSS di sini, tetapi cukup sederhana bagi siapa saja untuk diikuti. Sekarang halaman akan terlihat seperti berikut ini. @CHARSET "ISO-8859-1"; body { background-color: #cddcec; font-family: "Arial"; font-size: 11px; } div#container { width: 600px; margin: 0px auto; border: 1px solid #e6eef6; background-color: #ffffff; } div#container h2 { background-color: #4b75b3; margin: 0px; padding: 8px; font-family: "Arial"; font-weight: normal; border: 1px solid #3564a9; } div#container fieldset { margin: 20px; border: 1px solid #98b9d0; } ul#menu { list-style-type: none; margin: 4px; padding: 0px; } ul#menu li { float: left; margin: 4px; } ul#menu li.active { background-color: #98b9d0; border-left: 1px solid #3564a9; border-top: 1px solid #3564a9; border-bottom: 1px solid #e6eef6; border-right: 1px solid #e6eef6; } ul#menu li a { text-decoration: none; font-size: 10px; padding: 2px; color: #3564a9; } ul#files { list-style-type: none; margin: 40px 0px 0px 0px; padding: 0px; } ul#files li { background-color: #fff7c0; border-bottom: 1px solid #efefef; padding: 2px; margin-bottom: 1px; } Apa yang seharusnya kita miliki sekarang diilustrasikan dalam gambar berikut. Langkah 4 - Menangani Pengajuan Masukan File dengan PHPMari kita
mulai sisi PHP dari tutorial dengan membuat kelas Settings. Di kelas ini kita dapat menyimpan kata sandi pengunggahan serta path file untuk folder unggahan. <?php /** * Class Settings holds the upload settings * */ class Settings { static $password = "mypassword"; static $uploadFolder = "uploads/"; } ?> Tanpa melangkah lebih jauh ke dalam Object Oriented
Programming (OOP), apa yang dilakukan oleh kodenya adalah menciptakan kelas baru dengan jenis nilai yang dapat diakses tanpa instansiasi kelas. Ok, sekarang kita masuk ke bisnis. Dalam file html yang telah kita kerjakan, mari tambahkan hal-hal berikut ke bagian paling atas file. Ya, sebelum tag <head>. <?php //Load the settings require_once("settings.php"); $message = ""; Pertama-tama kita memberi tahu interpreter PHP untuk memasukkan file pengaturan kita. Saya juga menyiapkan variabel $message baru. Kemudian saya akan menulis informasi proses ke dalam variabel ini dan menampilkannya kepada pengguna. //Has the user uploaded something? if(isset($_FILES['file'])) { Jika formulir telah dikirimkan dengan sebuah file, array $_FILE harus memiliki nilai dengan kunci yang kita gunakan sebagai nama field masukan file. $target_path = Settings::$uploadFolder; $target_path = $target_path . time() . '_' . basename( $_FILES['file']['name']); Di sini kita mendapatkan path ke folder unggahan yang ditentukan dalam pengaturan. Pada Baris 2, kita menambahkan (menggabungkan) nama file yang diunggah ke path target. //Check the password to verify legal upload if($_POST['password'] != Settings::$password) { $message = "Invalid Password!"; } else { Jika pengajuan dilakukan tanpa memberikan kata sandi atau jika kata sandi yang diberikan adalah sesuatu selain yang ditentukan dalam pengaturan, kita tidak akan menangani file dan hanya mengembalikan pesan yang menunjukkan kata sandi palsu. //Try to move the uploaded file into the designated folder if(move_uploaded_file($_FILES['file']['tmp_name'], $target_path)) { $message = "The file ". basename( $_FILES['file']['name']). " has been uploaded"; } else{ $message = "There was an error uploading the file, please try again!"; } } } Ok, jadi kata sandinya benar, sekarang apa? Sekarang kita "menyimpan" file tersebut. Saya katakan simpan dalam tanda kurung karena file sebenarnya sudah ada di server; itu hanya di folder sementara. if(strlen($message) > 0) { $message = '<p class="error">' . $message . '</p>'; } Dan itulah cara mudah untuk mengunggah file ke server dengan PHP! Di sini saya baru saja memeriksa apakah ada sesuatu yang telah ditulis ke dalam variabel message (panjang lebih dari 0) dan memformatnya sehingga kita dapat memberinya gaya dengan CSS. Langkah 5 - Daftar File yang Diunggah/** LIST UPLOADED FILES **/ $uploaded_files = ""; //Open directory for reading $dh = opendir(Settings::$uploadFolder); Hal pertama yang harus dilakukan adalah membuat handle folder. Yang dibutuhkan hanyalah satu perintah. Variabel uploaded_file adalah di mana kita akan menulis nama folder dalam format HTML. //LOOP through the files while (($file = readdir($dh)) !== false) { Di sini kita melakukan perulangan melalui file-file di folder. Asalkan kita bisa membaca file selanjutnya di folder ke dalam variabel file kita melakukannya dan melanjutkan. Setelah kita melewati semua file, fungsi mengembalikan false dan mengakhiri perulangan. if($file != '.' && $file != '..') { Tanda '.' dan '..' juga dikembalikan oleh fungsi ini jadi kita harus memastikan bahwa kita tidak berusaha melakukan apa pun dengan itu. $filename = Settings::$uploadFolder . $file; $parts = explode("_", $file); Kita menambahkan nama file ke path folder unggahan dan menyimpannya sebagai variabel nama file. Lalu kita explode nama file di karakter '_'. $size = formatBytes(filesize($filename)); $added = date("m/d/Y", $parts[0]); $origName = $parts[1]; Sekarang kita memiliki nilai timestamp sebagai string itu sendiri, kita dapat memformatnya menjadi tanggal dan menyimpan nama file asli sebagai variabelnya sendiri. $filetype = getFileType(substr($file, strlen($file) - 3)); $uploaded_files .= "<li class=\"$filetype\"><a href=\"$filename\">$origName</a> $size - $added</li>\n"; Ketika mengunggah file ke server, PHP menyediakan kita dengan informasi jenis file, tetapi karena kita tidak memiliki tempat untuk menyimpan informasi itu, kita harus mencoba untuk mendapatkan jenis file dengan fungsi kustom. } } closedir($dh); if(strlen($uploaded_files) == 0) { $uploaded_files = "<li><em>No files found</em></li>"; } Jika tidak ada file yang ditemukan, atur var upload_files untuk menampilkan sebuah pesan. Kita juga harus menunjukkan string uploaded_files di suatu tempat; jadi tambahkan baris ini di dalam <ul> dengan id 'files'. <?php echo $uploaded_files; ?> Langkah 6 - Fungsi TambahanFungsi getFileType
mencoba menebak jenis file apa dengan membaca karakter terakhir dari namanya. Ini tidak akan berfungsi dengan ekstensi seperti .jpeg dan .tiff. function getFileType($extension) { $images = array('jpg', 'gif', 'png', 'bmp'); $docs = array('txt', 'rtf', 'doc'); $apps = array('zip', 'rar', 'exe'); if(in_array($extension, $images)) return "Images"; if(in_array($extension, $docs)) return "Documents"; if(in_array($extension, $apps)) return "Applications"; return ""; } Fungsi selanjutnya ini memformat byte menjadi format yang lebih mudah dibaca. Hanya matematika dasar -- tidak lebih. Fungsi itu sendiri dari komentar fungsi di PHP.net. function formatBytes($bytes, $precision = 2) { $units = array('B', 'KB', 'MB', 'GB', 'TB'); $bytes = max($bytes, 0); $pow = floor(($bytes ? log($bytes) : 0) / log(1024)); $pow = min($pow, count($units) - 1); $bytes /= pow(1024, $pow); return round($bytes, $precision) . ' ' . $units[$pow]; } ?> Dan itu untuk bagian PHP. Hanya beberapa JS dan CSS dan kita semua sudah selesai. Langkah 7 - Sentuhan CSS untuk Peningkatan KeterbacaanApa yang kita miliki sejauh ini akan terlihat seperti: Tetapi untuk memanfaatkan fungsi getFileType dan nama kelas yang dikembalikan, saya telah menambahkan baris CSS berikutnya ke dalam file style.css. ul#files li a { text-decoration: none; color: #3564a9; padding: 2px 25px; background-position: left; background-repeat: no-repeat; } ul#files li.Documents a { background-image: url('../images/text.jpg'); } ul#files li.Images a { background-image: url('../images/picture.jpg'); } ul#files li.Applications a { background-image: url('../images/zip.jpg'); } p.error { background-color: #fff7c0; border-bottom: 1px solid #efefef; font-weight: bold; color: #ff0000; padding: 6px; } Saya menugaskan ikon untuk setiap jenis file. Ikon yang saya
gunakan berasal dari koleksi megah yang ditemukan di http://www.famfamfam.com. Ah, jauh lebih baik. Langkah 8 - Beralih Visibilitas File dengan jQueryUntuk menyelesaikan sedikit, mari tambahkan beberapa fungsi tambahan
dengan JavaScript. Buat folder baru bernama "js" dan di folder itu buat file baru, filestorage.js. <script src="js/filestorage.js" /> Ini dianggap praktik yang baik untuk menyertakan jenis file js ini di bagian paling akhir halaman untuk memungkinkan Document Object Model (DOM) dimuat terlebih dahulu. function HideFiles(selector) { //show all files if(selector === "All files") { $("#files > li").show(); return true; } else { //show only the selected filetype $("#files > li").hide(); $("#files > li." + selector).show(); return true; } } Fungsi HideFiles melakukan dua hal. Jika selektor parameter sama dengan 'All files', fungsi akan melewati semua
<li> -item yang ada di dalam <ul> file dan membuatnya terlihat. function prepareMenu() { $("#menu li").click( function () { $("#menu li").each( function(){ $(this).removeClass("active"); } ); $(this).addClass("active"); HideFiles($(this).children().html()); return false; }); //Select the first as default $("#menu li:first").click(); } Fungsi prepareMenu menambahkan fungsi ke event onClick pada menu <li>. $(document).ready(function() { prepareMenu(); }); Jangan lupa untuk memanggil fungsi prepareMenu ketika halaman dimuat. Ini dapat dilakukan dengan mudah dengan memanggilnya di dalam event document ready seperti yang ditunjukkan di atas. Langkah 9 - Ucapkan Selamat untuk Pekerjaan yang Dilakukan dengan Baik!Itu saja! Anda sekarang harus memiliki penyimpanan file online yang berfungsi. Ini telah menjadi tutorial untuk para pemula. Mudah-mudahan itu cukup mendalam tanpa TERLALU jelas. Terima kasih telah membaca dan berikan komentar jika Anda memiliki pertanyaan.
Dimana menyimpan file PHP?File php yang akan dijalankan harus berada di dalam folder C:\xampp\htdocs, baik itu di dalam folder tersebut, atau folder-folder dibawahnya.
Pada folder Apakah PHP harus di simpan agar dapat di akses?Sebagaimana telah dijelaskan sebelumnya, bahwa file script php harus diletakkan dalam folder htdocs agar dapat dieksekusi oleh server. Dalam keperluan membuat project, maka perlu membuat folder project misal dengan nama "belajar-php" di dalam folder htdocs, sehingga direktori menjadi c:\xampp\htdocs\belajar-php.
Bagaimana cara menjalankan file PHP?Untuk menjalankan file php, silahkan buka web browser seperti mozilla firefox, chrome, internet explorer atau web browser lain. Kemudian ketik url http://localhost/tutorial/ lalu enter, jika semua sudah benar maka akan tampil seperti gambar di bawah ini.
Apa itu file PHP?PHP adalah singkatan dari Hypertext Preprocessor, yaitu bahasa pemrograman yang sebenarnya mirip dengan JavaScript dan Python. Perbedaannya adalah, PHP sering kali digunakan untuk komunikasi sisi server, sedangkan JavaScript bisa digunakan untuk frontend dan backend.
|