+ -
当前位置:首页 → 问答吧 → 删除非空目录(含N级子目录),要求不能删除某目录以外的其它目录

删除非空目录(含N级子目录),要求不能删除某目录以外的其它目录

时间:2007-03-23

来源:互联网

原创,但请大家帮我看看这个函数是否有安全漏洞:

递归删除目录,要求不能删除$CFG['vhost_root'] (一般为虚拟主机根目录)以外的其它目录
复制内容到剪贴板
代码:
<?php

// 删除非空目录,即使里面还有下级目录
function rmDirForce($dir) {
global $CFG;
if ( !file_exists($dir) ) {
  return false;
}
if ( str_replace('\\','/',dirname($dir)) == $CFG['root'] ) {
  // 不能删除 $CFG['root'] 下的一级目录
  return false;
}
$dir = str_replace('\\', '/', $dir);
$dir = str_replace('../', '', $dir);
$dir = str_replace('./', '', $dir);
if ( !strstr($CFG['vhost_root'], $dir)) || strlen($dir) <=  strlen($CFG['vhost_root']) ) {
  // 不能删除 $CFG['vhost_root'] 以外的目录
  return false;
}
  if ( $handle = opendir($dir) ) {
   while (false !== ($item = readdir($handle))) {
     if ($item != "." && $item != "..") {
       if (is_dir($dir . '/' . $item)) {
         rmDirForce($dir . '/' . $item);
       } else {
         unlink($dir . '/' . $item);
         //echo " removing $dir/$item<br>\n";
       }
     }
   }
   closedir($handle);
   rmdir($dir);
   return true;
  }
}


?>
[ 本帖最后由 hbcms 于 2007-3-23 10:42 编辑 ]

作者: hbcms   发布时间: 2007-03-23

如果 不是 用 递归实现 比较好

作者: muqiao   发布时间: 2007-03-23

热门下载

更多