php禁止目录遍历,使用PHP遍历文件目录与清除目录中文件的实现详解

今天无聊中练习了一下PHP遍历文件目录的程序,编写了以下两个程序,不过质量不是很好,轻拍~~~

1、清除PHP缓存文件

function read_dir($dir,$file)

{

$a =strpos($file,".php");

if($a>0)

{

unlink($dir . $file);

echo "delete $dir$file
";

return true;

}

if(strpos($file,".") === 0 || strpos($file,".") !== false ) return true;

if(strpos($file,".") === false || strpos($dir,"/") === false)

{

$dir = $dir . $file . "/";

if(!is_dir($dir)) return false;

$dh = opendir($dir);

while(($file = readdir($dh)) != false)

{

read_dir($dir,$file);   //递归调用

}

}

}

function clear_caches()

{

$dir = "./temp/";  //要清除的PHP缓存文件目录

if(!is_dir($dir)) die("It is not a dir");

$dh = opendir($dir);

while(($file = readdir($dh) )!=false)

{

//var_dump($file);

read_dir($dir,$file);

}

}

?>

2、遍历目录中所有文件

查看目录
文件名修改时间文件大小(k)

//$dir = "./admin/";

$dir = "c:/";

$up_dir = "上级目录";

$up_url = $dir;

if(isset($_REQUEST['act']) && $_REQUEST['act']=='list_dir')

{

if(emptyempty($_REQUEST['dir']))

{

$up_dir="目录为空!";

}

$dir = isset($_REQUEST['dir']) ? $_REQUEST['dir'] : $dir;

}

if(!is_dir($dir))

{

$up_dir="无效目录!";

}

?>

if(strpos($up_dir,"上级目录")!==false)

{

//if($up_url=="") echo $up_dir;

if($dir != "./admin/")

{

$up_url = substr($dir,0,-1);

$k = strrpos($up_url,"/");

$up_url = substr($up_url,0,$k-strlen($up_url));

$up_url = $up_url ."/";

}

echo "$up_dir";

}

else

{

echo $up_dir;

die();

}

?>

$up_dir = $dir;

$dh = opendir($dir);

while(($file=readdir($dh)) != false)

{

if($file != "." && $file != ".." && $file != ".svn" )

{

if(strpos($file,".") !==false)

{

$time = date("Y-m-d H:i:s", filectime($dir . $file));

$size = filesize($dir . $file)/1000;

echo "

$file$time$size";

}

else

{

$time = date("Y-m-d H:i:s.", filectime($dir . $file));

$size = filesize($dir . $file)/1000;

$dir = $dir . $file ."/";

echo "

$file$time$size";

$dir = $up_dir;

}

}

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值