Rabu, 11 Juli 2012

Sesi VII

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


ekarang 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 "UP";
}else{
echo "UP";
}
}
}
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[] = "$file\n";
}else{
$filenya[] = "$file\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

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
2
3
6
16
17
18

DRZ File Manager V1.0

19Path :
20
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"#999999">"; "; \n"; \n";
30  
FileAction
31
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 "
UP
50 }else{
51 echo "
UP
52 }
53 }
54 }else if ($file != ".") {
55 if(is_dir("../".$dir."/".$file)){//untuk mengetahui apakah file berupa direktori
56 $folder[] = "
'folder.png'>'browser.php?dir=$dir/$file'>$file
57 "javascript:tanya('$dir/$file')\">Del |
58 "chmod.php?f=$dir/$file\">CHMOD
59 }else{
60 $filenya[] = "
'document.png'>'..$dir/$file'>$file
61 "javascript:tanya('$dir/$file')\">Del |
62 "chmod.php?f=$dir/$file\">CHMOD
63 }
64 }
65 }
66 //kita tampilkan yang berupa folder-folder
67 for($i=0;$i$folder);$i++){
68 echo $folder[$i];
69 }
70 //sesudah menampilkan folder, kita tampilkan file-file
71 for($i=0;$i$filenya);$i++){
72 echo $filenya[$i];
73 }
74 closedir($handle);
75}
76
77?>
78
79
80"#ababab">
81Catatan :
82Untuk delete folder, isi folder harus di kosongkan terdahulu
83CHMOD hanya untuk UNIX/Linux
84
85

Upload File

86
"post" action="upload.php" enctype="multipart/form-data">
87"file" name="f[]">
88"file" name="f[]">
89"file" name="f[]">
90"file" name="f[]">
91"file" name="f[]">
92"">
93"upload">
94
95

Buat Folder

96
"buatfolder.php" method="post">
97Nama Folder : "text" name="folder">
98"">
99"Buat">
100
101
102
view plain | print | ?
del.php
1
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
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
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
2
3
4
5

DRZ File Manager V1.0

6
7File/Folder :
8
9$f = $_GET['f'];
10echo $f;
11?>
12
13CHMOD menjadi : "3"> Contoh : 777
14"">
15
16
17
18
view plain | print | ?
chmod2.php
1
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?>
 

Tidak ada komentar:

Posting Komentar