EOF; } //-------------------------------------- //ファイルリスト出力 //-------------------------------------- function OutFileList($dirurl,$param) { // カレントディレクトリ移動 $dirrank = split('/',$dirurl); while ($rank < (count($dirrank)-1)) { chdir($dirrank[$rank]); $rank ++; } if (!($dirurl == "./")) { $updir = array_pop($dirrank); if (count($updir) == 1) { $updir = "."; } else { $updir = implode('/',$updir); } } if ($updir) $dirlist .= "親ディレクトリへ"; // ファイルリスト出力 $dir = opendir("./"); $dircount = 0; while($file = readdir($dir)) { if ($file == ".") { $size = ceil((filesize($file))/1024); $date = date('Y.m.d H:i:s', filemtime("$file")); $dirlist .= "カレントディレクトリ$date\n"; } elseif (!($file == "..")) { if (is_dir("./$file")) { $size = ceil((filesize($file))/1024); $date = date('Y.m.d H:i:s', filemtime("$file")); $dirlist .= "$file/$date\n"; $dircount ++; } else { $size = ceil((filesize($file))/1024); $date = date('Y.m.d H:i:s', filemtime("$file")); $filelist .= "$file$date$size KB\n"; $filecount ++; } } } closedir($dir); print <<$dirurl
$dirlist
ディレクトリ数:$dircount
$filelist
ファイル数:$filecount
EOF; } //-------------------------------------- //確認画面出力 //-------------------------------------- function OutConfirm ($ConfirmMode,$file) { print <<$fileを削除しますか?
実行
キャンセルする場合はブラウザの履歴を戻ってください。

EOF; } //-------------------------------------- //エラー出力 //-------------------------------------- function OutError ($errtxt) { print << エラー発生!$errtxt

$errtxtしました。
ファイルリストに戻る

EOF; } //-------------------------------------- //変名画面出力 //-------------------------------------- function OutRenameform($file) { print <<

$file を

EOF; } //-------------------------------------- //フォルダをファイルごと削除 //-------------------------------------- function deldir($dirurl) { $dir = opendir("$dirurl"); while($file = readdir($dir)) { if (!(($file == ".") || ($file == ".."))) { if (is_dir("$dirurl$file")) { deldir("$dirurl$file/"); } else { unlink("$dirurl$file"); } } } closedir($dir); rmdir("$dirurl"); } //-------------------------------------- //処理完了画面出力 //-------------------------------------- function OutComplete($comptxt) { print << $comptxt 処理完了

$comptxt しました。
ファイルリストに戻る

EOF; } $mode = $_GET['mode']; switch ($mode) { case "list": $dir = $_GET['dir']; if (!$dir)$dir="./"; OutHeader("ファイルリスト"); $filelist = OutFileList($dir,0); break; case "delconfirm": OutHeader("ファイル削除確認"); $file = $_GET['file']; OutConfirm ("del",$file); break; case "rmdirconfirm": OutHeader("ディレクトリ削除確認"); $dir = $_GET['dir']; OutConfirm ("rmdir",$dir); break; case "rmdir": deldir($_GET['file']); OutComplete("ディレクトリ削除"); break; case "del": $file = $_GET['file']; $state = unlink($file); if ($state) { OutComplete("ファイル削除"); } else { OutError("削除失敗"); } break; case "renameconfirm": $file = $_GET['file']; OutHeader("変名"); OutRenameform($file); break; case "dirrenameconfirm": $dir = $_GET['dir']; OutHeader("変名画面"); OutRenameform($dir); break; case "rename": $state = rename($_GET['oldfile'],$_GET['newfile']); if ($state) { OutComplete("変名"); } else { OutError("変名失敗"); } break; case "mkdir": mkdir (newFolder, 0777); OutComplete("newFolder生成"); break; case "copy": $filename = $_GET['file']; $fileurl = split("/",$filename); $dirrank = count($fileurl) - 1; $fileurl[$dirrank] = "copy~$fileurl[$dirrank]"; $newfile = implode('/',$fileurl); $state = copy ($filename,$newfile); if ($state) { OutComplete("コピー"); } else { OutError("コピー失敗"); } break; case "edit": $filename = $_GET['file']; OutHeader("ファイル編集 - $filename"); $filebody = file($filename); $filebody = join("",$filebody); $filebody = htmlspecialchars($filebody); print <<

EOF; break; case "save": $filename = $_GET['filename']; $filebody = $_POST['filebody']; $editfile = fopen($filename,'w+'); if (!$editfile) { OutError("ファイルオープン失敗"); break; } fputs($editfile,stripslashes($filebody)); fclose($editfile); OutComplete("保存完了"); break; default: $dir = $_GET['dir']; if (!$dir)$dir="./"; OutHeader("ファイルリスト"); OutFileList($dir,0); }