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 "..".$file = readdir($handle)
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 Direktoriif($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>";
}
}
}
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 :$folder[] = "<a href='browser.php?dir=$dir/$file'>$file</a>\n";
}else{
$filenya[] = "<a href='..$dir/$file'>$file</a>\n";
}
//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 Folderfor($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];
}
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 :if($value){
$tmp_name = $_FILES["f"]["tmp_name"][$key];
$up = move_uploaded_file($tmp_name, "$folder/$value");
}
}
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> |
4 | table{font-family:arial;font-size:10pt} |
5 | </style> |
6 | <script> |
7 | //membuat fungsi konfirmasi sebelum didelete |
8 | function 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> |
19 | Path : |
20 | <?php |
21 | $dir = $_GET['dir']; |
22 | if(!$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 |
32 | if(preg_match("/\/\.\./",$dir)){//untuk mencegah jika ada yang mengetik /../.. |
33 | die("tidak boleh"); |
34 | } |
35 | if ($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"> |
81 | Catatan :<br> |
82 | Untuk delete folder, isi folder harus di kosongkan terdahulu<br> |
83 | CHMOD 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"> |
97 | Nama 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 | ? |
1 | <?php |
2 | $f = $_GET['f']; |
3 | $xfile = "..".$f; |
4 | if(is_dir($xfile)){ |
5 | rmdir($xfile); |
6 | }else{ |
7 | unlink($xfile); |
8 | } |
9 | $dirx = explode("/",$f); |
10 | $diry = ""; |
11 | for($i=0;$i<(count($dirx)-1);$i++){ |
12 | $diry = $diry.$dirx[$i]."/"; |
13 | } |
14 | $diry = substr($diry,0,-1); |
15 | header("location:browser.php?dir=$diry"); |
16 | |
17 | ?> |
view plain | print | ? |
1 | <?php |
2 | $dir = $_POST['dir']; |
3 | $folder = "..".$dir; |
4 | foreach($_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 | } |
10 | header("location:browser.php?dir=$dir"); |
11 | ?> |
view plain | print | ? |
1 | <?php |
2 | $folder = $_POST['folder']; |
3 | $dir = $_POST['dir']; |
4 | mkdir("..".$dir."/".$folder, 0775); |
5 | header("location:browser.php?dir=$dir"); |
6 | ?> |
view plain | print | ? |
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> |
7 | File/Folder : |
8 | <?php |
9 | $f = $_GET['f']; |
10 | echo $f; |
11 | ?> |
12 | <br> |
13 | CHMOD 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 | ? |
1 | <?php |
2 | $f = $_POST['f']; |
3 | $chmod = "0".$_POST['chmod']; |
4 | $file = "..".$f; |
5 | chmod($file,$chmod); |
6 | $dirx = explode("/",$f); |
7 | $diry = ""; |
8 | for($i=0;$i<(count($dirx)-1);$i++){ |
9 | $diry = $diry.$dirx[$i]."/"; |
10 | } |
11 | $diry = substr($diry,0,-1);//untuk mendapatkan parent direktori |
12 | header("location:browser.php?dir=$diry"); |
13 | ?> |
view plain | print | ? |
http://blog.codingwear.com/read23-Membuat-File-Manager-Pada-Server-Hosting-Dengan-PHP.drz
Makasih tutornya gan..maju terus phpnya ya..salam
BalasHapusKalau ada waktu kunjungi juga web ku ya..www.jualtutorialku.com
Salam
ia gan.. mksih udah mampir.
BalasHapussalam sukses.
terimakasih brow, ini sangat bermanfaat
BalasHapusterimakasih brow, ini sangat bermanfaat
BalasHapusGak bisa di download
BalasHapusTolong diperbaiki
bisakah anda buat address bar seperti windows explorer dan saat sampai folder tujuan bisa drag foto, contohnya seperti :
BalasHapusAll 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]