Membuat File Manager Pada Server Hosting Dengan PHP

 Jika kamu hosting website, baik yang bayar atau gratisan, biasanya akan diberi control panel, nah di control panel biasanya ada file manager, semacam program untuk browsing folder-folder atau file-file kita yang ada di server (seperti window explorer). Bila kita klik salah satu folder, maka akan muncul list isi yang ada dalam folder tersebut, isi folder tersebut bisa berupa folder atau file. Kemudian kita bisa mengupload file ke dalam folder yang kita buka tersebut, membuat folder baru, mendelete file atau folder dan juga mengubah file mode (chmod).
Sekarang mari kita mulai membuat kode-kodenya
Pada contoh kode-kode berikut, belum ada authentication halaman, supaya contohnya lebih sederhana dan bisa dicoba. Jika anda coba di hosting anda, jangan lupa untuk di kasih proses authentication, artikel membuat authentication dengan $_SESSION ada di sini
Membuka dan Membaca Isi Direktori
Untuk membuka isi suatu direktori dan membaca isinya kita menggunakan kode berikut :

$handle = opendir("..".$dir)
$file = readdir($handle)
Fungsi opendir berguna untuk membuka suatu direktori, pada contoh di atas, saya membuka direktori yang diawali titik dua "..", yang artinya parent direktori, file browser.php ini kita letakkan di dalam folder filemanager sedangkan folder yang ingin diakses adalah folder parentnya maka kita selalu gunakan "..".
Membuat Link Parent Direktori
Seperti kita ketahui, bahwa titik dua ".." adalah parent direktori, tetapi untuk alasan keamanan kita menghindari penggunaan titik dua, karena user akan bisa masuk ke root direktori, bayangkan jika user mengetik dir=/www/folder1/../../../, user bisa masuk ke root direktori.
Misalnya direktori yang sedang kita buka adalah
/folder1/folder2/folder3
Nah, parent direktori dari direktori di atas adalah
/folder1/folder2
kode berikut untuk membuat link ke parent direktori tanpa menggunakan titik dua "..".

if($file == ".."){
if($dir!=""){
$dirx = explode("/",$dir);
$diry = "";
for($i=0;$i<(count($dirx)-1);$i++){
$diry = $diry.$dirx[$i]."/";
}
$diry = substr($diry,0,-1);//untuk mendapatkan parent direktori
if($diry == ""){
echo "<tr><td colspan=2><a href='browser.php'>UP</a></td></tr>";
}else{
echo "<tr><td colspan=2><a href='browser.php?dir=$diry'>UP</a></td></tr>";
}
}
}
Menampilkan Isi Suatu Direktori
Suatu direktori bisa berisi file-file atau juga direktori-direktori, di sini kita ingin memisahkan link dan icon antara file dan direktori. Untuk mengecek apakah isi suatu direktori berupa direktori kita menggunakan kode :
if(is_dir("../".$dir."/".$file)){//untuk mengetahui apakah file berupa direktori
$folder[] = "<a href='browser.php?dir=$dir/$file'>$file</a>\n";
}else{
$filenya[] = "<a href='..$dir/$file'>$file</a>\n";
}
Kode di atas kita membuat link isi suatu direktori, di mana link antara file dan direktori berbeda. Pada kode di atas kita sementara menyimpan isi suatu direktori ke variabel array $folder[] dan $filenya[], supaya nanti kita bisa menyusun yang bertipe direktori di print terlebih dahulu (di taruh paling atas), baru setelah itu print yang bertipe file, seperti kode berikut :
//kita tampilkan yang berupa folder-folder terlebih dahulu
for($i=0;$i<count($folder);$i++){
echo $folder[$i];
}
//sesudah menampilkan folder, kita tampilkan file-file
for($i=0;$i<count($filenya);$i++){
echo $filenya[$i];
}
Mendelete, Mengupload dan Membuat Folder
Untuk mendelete file :
unlink($xfile);
Untuk mendelete direktori :
rmdir($xfile);
Untuk mengupload multiple file :

foreach($_FILES['f']['name'] as $key =>$value){
if($value){
$tmp_name = $_FILES["f"]["tmp_name"][$key];
$up = move_uploaded_file($tmp_name, "$folder/$value");
}
}
Untuk membuat folder :
mkdir("..".$dir."/".$folder, 0775);
Kode Lengkapnya
Setelah bingung melihat penjelasan di atas, berikut kode PHP untuk program file manager kita, browser.php

1<html> 
2<head><title>DRZ File Manager 1.0</title> 
3<style> 
4table{font-family:arial;font-size:10pt} 
5</style> 
6<script> 
7//membuat fungsi konfirmasi sebelum didelete 
8function tanya(nama){ 
9    x = confirm("Apakah anda akan mendelete\n"+nama); 
10    if(x == 1){ 
11        //jika user mengklik tombol OK 
12        document.location = "del.php?f="+nama; 
13    } 
14
15</script> 
16</head> 
17<body> 
18<h2>DRZ File Manager V1.0</h2> 
19Path : 
20<?php 
21$dir = $_GET['dir']; 
22if(!$dir){ 
23    echo "."
24}else
25    echo $dir
26
27//kode di atas hanya untuk menampilkan path yang lagi dibuka 
28?> 
29<table cellpadding=3 cellspacing=2> 
30<tr bgcolor="#999999"><td>File</td><td>Action</td><tr> 
31<?php 
32if(preg_match("/\/\.\./",$dir)){//untuk mencegah jika ada yang mengetik /../.. 
33    die("tidak boleh"); 
34
35if ($handle = opendir("..".$dir)) { 
36//file browser.php ini kita letakkan di dalam folder filemanager 
37//sedangkan folder yang ingin diakses adalah folder parentnya 
38//maka kita selalu gunakan ".." 
39    while (false !== ($file = readdir($handle))) { 
40        if($file == ".."){ 
41            if($dir!=""){ 
42                $dirx = explode("/",$dir); 
43                $diry = ""
44                for($i=0;$i<(count($dirx)-1);$i++){ 
45                    $diry = $diry.$dirx[$i]."/"
46                } 
47                $diry = substr($diry,0,-1);//untuk mendapatkan parent direktori 
48                if($diry == ""){ 
49                    echo "<tr><td colspan=2><a href='browser.php'>UP</a></td></tr>"
50                }else
51                    echo "<tr><td colspan=2><a href='browser.php?dir=$diry'>UP</a></td></tr>"
52                } 
53            } 
54        }else if ($file != ".") { 
55            if(is_dir("../".$dir."/".$file)){//untuk mengetahui apakah file berupa direktori 
56                $folder[] = "<tr><td><img src='folder.png'><a href='browser.php?dir=$dir/$file'>$file</a></td> 
57                    <td><a href=\"javascript:tanya('$dir/$file')\">Del</a> | 
58                    <a href=\"chmod.php?f=$dir/$file\">CHMOD</a></td></tr>\n"; 
59            }else
60                $filenya[] = "<tr><td><img src='document.png'><a href='..$dir/$file'>$file</a></td> 
61                <td><a href=\"javascript:tanya('$dir/$file')\">Del</a> | 
62                <a href=\"chmod.php?f=$dir/$file\">CHMOD</a></td></tr>\n"; 
63            } 
64        } 
65    } 
66    //kita tampilkan yang berupa folder-folder 
67    for($i=0;$i<count($folder);$i++){ 
68        echo $folder[$i]; 
69    } 
70    //sesudah menampilkan folder, kita tampilkan file-file 
71    for($i=0;$i<count($filenya);$i++){ 
72        echo $filenya[$i]; 
73    } 
74    closedir($handle); 
75
76
77?> 
78</table> 
79<p> 
80<font size=2 color="#ababab"
81Catatan :<br> 
82Untuk delete folder, isi folder harus di kosongkan terdahulu<br> 
83CHMOD hanya untuk UNIX/Linux 
84</font> 
85<h3>Upload File</h3> 
86<form method="post" action="upload.php" enctype="multipart/form-data"
87<input type="file" name="f[]"><br> 
88<input type="file" name="f[]"><br> 
89<input type="file" name="f[]"><br> 
90<input type="file" name="f[]"><br> 
91<input type="file" name="f[]"><br> 
92<input type=hidden name=dir value="<?php echo $dir; ?>"
93<input type=submit value="upload"
94<input type=reset></form> 
95<h3>Buat Folder</h3> 
96<form action="buatfolder.php" method="post"
97Nama Folder : <input type="text" name="folder"
98<input type=hidden name=dir value="<?php echo $dir; ?>"
99<input type=submit value="Buat"
100</form> 
101</body> 
102</html> 

view plain | print | ?
del.php

1<?php 
2$f = $_GET['f']; 
3$xfile = "..".$f
4if(is_dir($xfile)){ 
5    rmdir($xfile); 
6}else
7    unlink($xfile); 
8
9$dirx = explode("/",$f); 
10$diry = ""
11for($i=0;$i<(count($dirx)-1);$i++){ 
12    $diry = $diry.$dirx[$i]."/"
13
14$diry = substr($diry,0,-1); 
15header("location:browser.php?dir=$diry"); 
16
17?> 

view plain | print | ?
upload.php

1<?php 
2$dir = $_POST['dir']; 
3$folder = "..".$dir
4foreach($_FILES['f']['name'as $key =>$value){ 
5    if($value){ 
6        $tmp_name = $_FILES["f"]["tmp_name"][$key]; 
7        $up = move_uploaded_file($tmp_name"$folder/$value"); 
8    } 
9
10header("location:browser.php?dir=$dir"); 
11?> 

view plain | print | ?
buatfolder.php

1<?php 
2$folder = $_POST['folder']; 
3$dir = $_POST['dir']; 
4mkdir("..".$dir."/".$folder, 0775); 
5header("location:browser.php?dir=$dir"); 
6?> 

view plain | print | ?
chmod.php

1<html> 
2<head><title>DRZ File Manager 1.0</title> 
3</head> 
4<body> 
5<h2>DRZ File Manager V1.0</h2> 
6<form action=chmod2.php method=post> 
7File/Folder : 
8<?php 
9$f = $_GET['f']; 
10echo $f
11?> 
12<br> 
13CHMOD menjadi : <input type=text name=chmod size=3 maxlength="3"> Contoh : 777<br> 
14<input type=hidden name=f value="<?php echo $f; ?>"
15<input type=submit value=Ubah> 
16</form> 
17</body> 
18</html> 

view plain | print | ?
chmod2.php

1<?php 
2$f = $_POST['f']; 
3$chmod = "0".$_POST['chmod']; 
4$file = "..".$f
5chmod($file,$chmod); 
6$dirx = explode("/",$f); 
7$diry = ""
8for($i=0;$i<(count($dirx)-1);$i++){ 
9    $diry = $diry.$dirx[$i]."/"
10
11$diry = substr($diry,0,-1);//untuk mendapatkan parent direktori 
12header("location:browser.php?dir=$diry"); 
13?> 

view plain | print | ?
Download Source Code


http://blog.codingwear.com/read23-Membuat-File-Manager-Pada-Server-Hosting-Dengan-PHP.drz 

6 komentar:

  1. Makasih tutornya gan..maju terus phpnya ya..salam
    Kalau ada waktu kunjungi juga web ku ya..www.jualtutorialku.com

    Salam

    BalasHapus
  2. ia gan.. mksih udah mampir.

    salam sukses.

    BalasHapus
  3. terimakasih brow, ini sangat bermanfaat

    BalasHapus
  4. terimakasih brow, ini sangat bermanfaat

    BalasHapus
  5. Gak bisa di download
    Tolong diperbaiki

    BalasHapus
  6. bisakah anda buat address bar seperti windows explorer dan saat sampai folder tujuan bisa drag foto, contohnya seperti :
    All Files > 2019 > Bali > [+] (saat tekan + akan di suruh masukin nama folder baru yang akan di buat)

    saat sudah kebuat di dalemnya ada kotak : [ Drag Foto di sini ]


    LOGIN [DONE]

    BalasHapus