删除非空目录(含N级子目录),要求不能删除某目录以外的其它目录
时间:2007-03-23
来源:互联网
原创,但请大家帮我看看这个函数是否有安全漏洞:
递归删除目录,要求不能删除$CFG['vhost_root'] (一般为虚拟主机根目录)以外的其它目录
递归删除目录,要求不能删除$CFG['vhost_root'] (一般为虚拟主机根目录)以外的其它目录
复制内容到剪贴板
// 删除非空目录,即使里面还有下级目录
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 编辑 ] 代码:
<?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-03-23
如果 不是 用 递归实现 比较好
作者: muqiao 发布时间: 2007-03-23
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28