header("content-Type: text/html; charset=utf-8");
//設定が始まります
$path=".";//これらの設定で削除されるディレクトリは現在のディレクトリです。例: パス ディレクトリを削除するには、パスを引用符で囲んで追加してください。
$guolv="del.php,install.php,path";//フィルタリングする必要があるファイルまたはフォルダーをアンパサンドで区切って英語で設定します
//設定終了
if($_GET['action']=="del"){
$file= array_values_recursive(recurdir($path,$guolv));
foreach($file as $k => $v){
削除_ディレクトリ($v);
}
}その他{
echo "設定は次のとおりです
削除するディレクトリは次のとおりです:
";
if($path==".")echo "現在のディレクトリ";else echo $path;
echo " フィルタリングしたいファイルまたはフォルダは次のとおりです: ".$guolv."
フィルタリングを確認する場合は、ここをクリックして、対応するディレクトリとディレクトリ内のすべてのファイルの削除を開始してください 構成が正しくない場合は、ファイル内で修正してください。
";
}
//ディレクトリとファイルを削除します
関数削除ディレクトリ($dir) {
foreach(glob($dir) as $fn) {
echo " $fn n を削除します";
if (!is_writable($fn))@chmod($fn, 0777);
if(is_dir($fn)){@rmdir($fn);}else{@unlink($fn);}
}
}
// ディレクトリをスキャンします
関数 recurdir($pathname,$guolv='del.php')
{
$result=array();$temp=array();
// ディレクトリが有効で読み取り可能かどうかを確認します
if(!is_dir($pathname) || !is_readable($pathname))
null を返す;
// ディレクトリ内のすべてのフォルダーを取得します
$allfiles=scandir($pathname);
foreach($allfiles as $key => $filename)
{
//「.」または「..」の場合はスキップします
if(in_array($filename,array('.','..')))続行;
if(count($guolv)>0){$lv=explode(",",$guolv);if(in_array($filename,$lv))Continue;}
// ファイルの完全な名前を取得します
$fullname =$パス名 . "/" .$ファイル名;
// ファイルがディレクトリの場合は、 recurdir を再帰的に呼び出します
$temp[]=$フルネーム;
if(is_dir($fullname)){
$nowpath=explode("/",$fullname);
If(count($guolv)>0){$lv=explode(",",$guolv);if(in_array($nowpath[count($nowpath)-1],$lv))Continue;}
$result[$filename] = recurdir($fullname);}
}
//最後に、ディレクトリが前にあり、ファイルが後ろにあることを確認して、一時配列の内容を結果配列に追加します
foreach($temp as $f){
$result[]=$f;
}
$result を返します;
}
//すべてのファイルを取得します
関数 array_values_recursive($ary)
{
$lst = array();
foreach( array_keys($ary) as $k ){
$v = $ary[$k];
if (is_array($v)) {$lst = array_merge( $lst, array_values_recursive($v));}else{$lst[] = $v;}
}
$lst; を返します
}
?>
|