Skip to main content

PHP: Web File Manager



Lagi males ngomong, coba aja sendiri!
eh iya, karena penerimaan form-nya menggunakan variabel global secara sporadis, jadi harus mengubah setting dari php dulu untuk versi 5 keatas karena secara default mendisable global register. Ubah settingnya misal di file /etc/apache/php.ini sesuai instalasinya, ubah off menjadi on. Atau tambahkan penerimaan semua variabel get misal dengan $ind=$_GET[ind]; dibagian atasnya.

register_globals = on

source code:



<?php
{
$akses=9;
$skrip=$_SERVER['PHP_SELF']."?";
$rootDir=".";
$homeDir="$rootDir";
$Jenis=$homeDir;
echo "Home direktori anda : ".$homeDir;
}


/* Example: */ //dironly ('.','','.') //fileonly('.','.','') //htmlonly('.','.html','') //w/o html('.','','.html')
function fileList($dir,$ikut0,$lewat0){
$hasil=array();
$ikut=explode(' ',$ikut0);
$lewat=explode(' ',$lewat0);
if ($handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
$ikutya=0;
$lewatya=0;
foreach ($ikut as $i => $value ){
if(strripos($file,$value)!==false && $value!='.')$ikutya=1;
else if($value=='.' && is_dir("$dir\$file"))$ikutya=1;
}
foreach ($lewat as $i => $value ){
if(strripos($file,$value)!==false && $value!='.')$lewatya=1;
else if($value=='.' && is_dir("$dir\$file"))$lewatya=1;
}
if($ikut0=='')$ikutya=1;
if($lewat0=='')$lewatya=0;
if($ikutya==1&&$lewatya==0)$hasil[]=$file;//));htmlentities(rawurlencode(
}
}
closedir($handle);
}
return $hasil;
}


if(isset($op)&&$akses>=5){
$asal=dirname($ind);
switch($op){
case "tambahDir":
if(isset($D0)){
if(mkdir(("$ind/$D0"))){
echo "<script>alert('berhasil membuat $ind/$D0')</script>";
$handle=touch("$ind/$D0/index.html");
}else
echo "<script>alert('Gagal membuat $ind/$D0')</script>";
echo"<script>location.assign('$skrip&ind=$ind/$D0'); </script>";
}else{
echo"
<script>
var D0=prompt('Masukkan nama direktori baru','');
if(D0!=null && D0.length>0){location.assign('$skrip&op=$op&ind=$ind&D0='+D0);}
else {history.go(-2);}
</script>
";
}
break;
case "tambahFile":
if(isset($D3)){
$file=$_FILES['D3']['name'];
$newfile=($ind."/".$file);//str_replace(" ","_",$file);
if (move_uploaded_file($_FILES['D3']['tmp_name'], $newfile)) {
echo "<script>alert('berhasil menambah $newfile')</script>";
}else{
echo "<script>alert('gagal menambah $newfile')</script>";
}
echo"<script>location.assign('$skrip&ind=$ind'); </script>";
}else{

?>
<table><tr align=center><td colspan=2>Upload File di <? echo $ind; ?><br><br></td></tr>
<form method="POST" enctype="multipart/form-data" action="<?php echo "$skrip&ind=$ind&op=$op" ?>">
<input type=hidden name="D0" values="user">
<input type=hidden name="D1" value="<? echo date("H:i:s j/m/y") ?>" >
<tr><td >Keterangan:</td><td ><input type=text name="D2"></td></tr>
<tr><td>File:</td><td> <input type=file name="D3">
</td></tr>
<tr><td colspan=2><input type=submit name="ok" value="Simpan"></td></tr>
</table>
</form>
<?
}
break;
case "hapus":
if(is_dir($ind)){
if(file_exists("$ind/index.html"))unlink("$ind/index.html");
if(rmdir("$ind"))echo "<script>alert('berhasil menghapus $ind');</script>";
else echo "<script>alert('gagal menghapus $ind, direktori belum kosong');</script>";
}else{
if(unlink("$ind"))echo "<script>alert('berhasil menghapus $ind');</script>";
else echo "<script>alert('gagal menghapus $ind');</script>";
}
echo"<script>location.assign('$skrip&ind=".dirname($ind)."'); </script>";
break;
case "rename":
if(isset($D0)){
if(rename($ind,dirname($ind)."/$D0")){
echo "<script>alert('berhasil merename $ind/$D0')</script>";
}else
echo "<script>alert('Gagal merename $ind/$D0')</script>";
echo"<script>location.assign('$skrip&ind=".dirname($ind)."'); </script>";
}else{
echo"
<script>
var D0=prompt('Masukkan nama file baru','');
if(D0!=null && D0.length>0){location.assign('$skrip&op=$op&ind=$ind&D0='+D0);}
else {history.go(-2);}
</script>
";
}
}
}else{
if(!isset($ind)||strstr($ind,$homeDir)==false)$ind=$homeDir;
echo"<table border=1 width=100%>
<tr><td colspan=3 align=center>&nbsp;<font class=title>".strtoupper(substr(strrchr($ind, "/"), 1))."</font></td></tr>
<tr><td colspan=2><a href='$skrip'>[Home]</a>";
$indJudul=str_replace($homeDir,"",$ind);//buat judul
$arrInd=explode('/',$indJudul);
unset($Judul);
foreach($arrInd as $ieai=>$eai){
$Judul.="<a href='$skrip&ind=$Jenis";
for($iieai=0;$iieai<=$ieai;$iieai++){
$Judul.=($arrInd[$iieai]);
if($iieai<$ieai)$Judul.="/";
}
$Judul.="'>$eai</a>/";
}
echo ($Judul)."</td>";

if($akses>=5)echo"<td width=10><a href='$skrip&ind=".($ind)."&op=tambahDir'>TambahDir</a> <a href='$skrip&ind=".($ind)."&op=tambahFile'>TambahFile</a> </td>";
echo"</tr>
<tr align=center><td>Nama</td>
<td>Ukuran</td>";
if($akses>=5)echo"<td>Operasi</td>";
echo"</tr>
";

$arsip=fileList("$ind",'','index.html');//tampilkan isi
foreach($arsip as $iArsip=>$cArsip){
$test=(($ind)."/".($cArsip));
echo"<tr><td>";
if(is_dir(($test)))echo"<a href='$skrip&ind=".rawurlencode($test)."'>$cArsip</a>";//rawurldecode
else echo"<a href='".($test)."'>".($cArsip)."</a>";
$ukuran=filesize($test);
if(is_dir($test)){
$ukuran="";
}else if($ukuran>=1000000){
$ukuran=$ukuran/1000000;
$ukuran=round($ukuran,2);
$ukuran=$ukuran." MB";
}else if($ukuran>=1000){
$ukuran=$ukuran/1000;
$ukuran=round($ukuran,2);
$ukuran=$ukuran." KB";
}else{
$ukuran=$ukuran." byte";
}
echo "</td>
<td>&nbsp;".$ukuran."</td>";
if($akses>=5)echo"<td><a href='$skrip&ind=$test&op=hapus'>Hapus</a> &nbsp;<a href='$skrip&ind=$test&op=rename'>Rename</a></td>";
echo"</tr>";
unset($row);
}
echo"</table><br/>";
}

?>


Comments

  1. Thanks om ini yang tak cari... tapi masih kurang Edit file nya y...

    ReplyDelete

Post a Comment

Popular posts from this blog

Java-MySql: Aplikasi Database dengan Data Gambar (Updated)

Untuk update metode simpan gambar lihat di appGambar 2.0 Bagaimana caranya menyimpan data yang membutuhkan penyimpanan data gambar? Misalkan data pegawai yang membutuhkan penyimpanan gambar dari setiap pegawai. Alternatifnya ada dua, dengan kelebihan dan kekurangan masing-masing. Cara yang pertama adalah dengan membuat field dengan tipe data binary, kemudian menyimpan gambar yang dibutuhkan dalam field di database tersebut. Cara ini membutuhkan manajemen program yang lebih rumit, tapi data gambar akan terjamin, karena tersimpan didalam database yang terintegrasi dengan data lainnya. Kekurangan lainnya adalah ukuran database yang akan membesar dan lambat. Bayangkan saja, sebuah field membutuhkan gambar dengan format jpeg, 200kB. Apabila ada 200 juta record, maka ukuran field yang diperuntukan khusus untuk gambar dengan perhitungan kasar adalah 0.2 MB x 200M = 40 x 10^12 = 40 TB. Belum ditambah dengan ukuran data dari field lainnya, kalau misalkan untuk menyimpan data penduduk Indonesia....

JarMaker & j2Exe: Membuat Executable Aplikasi Java

Lupakan mitos java tidak bisa dijalankan secara langsung. Jangan percaya kalau ada yang bilang java tidak bisa dibuat menjadi aplikasi exe. Kuno kalo masih menggunakan file jar saja atau bahkan file class untuk hasil building aplikasi java. Cobalah untuk sedikit berimprovisasi membuat aplikasi java menjadi exe, hal yang tidak bisa dilakukan oleh tools yang disediakan jdk, bahkan netbeans 6 saat ini. Hasil binary compiler java berupa file class, yang dijalankan dengan perintah java namaclass. Jadi paling tidak untuk menjalankannya harus melalui command prompt, atau yang sedikit kreatif dengan membuat shortcut yang diarahkan ke java.exe dengan parameter nama class yang dipanggil, lengkap dengan pengubahan icon sesuai dengan aplikasinya. Sun sendiri mengembangkan file arsip kompresi jar, mirip dengan format zip, dengan tool yang disediakan di jdk-nya,untuk menghasilkan sebuah file yang berisi seluruh class yang dibutuhkan, sehingga dapat dilakukan pemanggilan dengan class yang pertama...

Java: Pengiriman Parameter antar Frame

Sebenarnya konsep ini berlaku bukan hanya pada frame, tapi bisa dilakukan antar object dari class yang sifatnya umum, karena Java yang sifatnya sudah full OOP. Tapi, karena lebih sering diterapkan dalam pemrograman GUI desktop, khususnya dengan Netbeans, maka dicontohkan dengan class javax.swing.JFrame. Setiap bentuk code java harus dibentuk dalam bentuk class, biar sebagaimanapun sederhananya. Tidak seperti pemrograman lainnya yang menggunakan konsep OOP sebagai tambahan dan pengembangan dari yang sudah ada sebelumnya. Itulah sebabnya kita mengenal class di C++, Pascal, PHP, tapi masih diperbolehkan untuk tetap menggunakan konsep primitif. Sedangkan pada kasus java dan .NET, OOP merupakan inti utamanya yang harus selalu diikuti dan diterapkan. Awalnya akan sangat membingungkan, tapi sangat mudah untuk langkah pengembangan selanjutnya. Sudah lihat JavaDoc? itu adalah dokumen pemrograman yang paling aneh didunia, pada pandangan pertama. Coba bandingkan dengan MSDN-nya .NET, PHP Manual, ...