PHP 如何遍历一个目录 要求刚出来只显示第一级的文件夹和文件 当点击了文件夹的时候显示下级文件 要代码! 100

用mvcjavascript我要对目录进行修改和删除操作如图片所示要求每显示下级需要缩进或者用----表示把php中的代码写进类里边html中要用smarty注释明确代码... 用mvc javascript 我要对目录进行修改和删除操作
如图片所示 要求每显示下级 需要缩进 或者用 ---- 表示
把php中的代码写进类里边 html中要用smarty
注释明确 代码简洁 给双倍分! 本人QQ:250578663
如有需要 可以Q我 并注明是:“百度知道,回答100分提问”
展开
 我来答
百度网友a513422
2011-08-26 · 超过20用户采纳过TA的回答
知道答主
回答量:32
采纳率:0%
帮助的人:42.6万
展开全部
把变量填充到模板就自己搞定了,难道遇到问题,就什么都要别人给你搞定,自己能搞定的,就自己搞定。
<?php
error_reporting(E_ALL ^ E_NOTICE);
@header("Content-Type: text/html; charset=utf-8");

if($_GET['rootdir']){
$rootdir = $_GET['rootdir'];
}else{
$query = trim($_SERVER['QUERY_STRING'])!=''?queryCode($_SERVER['QUERY_STRING']):array();
$rootdir = $query['rootdir'];
print_r($query);
echo '<hr>';

$showpath = $query['showpath'];//选择的路径
$showpathData = explode('/',$showpath);
$showpathData = array_diff($showpathData, array(''));
$showpathData = array_values($showpathData);
print_r($showpathData);
echo '<hr>';
}
(!$rootdir || !is_dir($rootdir)) && $rootdir = dirname(__FILE__);//定义默认根路径
$levl=0;
$nowDir = $query['rootdir'].$query['showpath'];
!$nowDir && $nowDir = $rootdir;
$queryData = array();
$queryData['rootdir'] = $rootdir;

function read_dir($path){
strpos($path,'..') !== false && exit('Forbidden');
$return=array();
$return['dirs']=array();
$return['files']=array();
if(is_dir($path)){
$childs=@opendir($path);
while($child=@readdir($childs)){
if($child!="." && $child!=".." && $child!="" && $child!="Thumbs.db"){
if(is_dir("$path/$child")){
$return['dirs'][] = $child;
}else{
$return['files'][] = $child;
}
}
}
@closedir($childs);
}
count($return['dirs']) && sort($return['dirs']);
count($return['files']) && sort($return['files']);
return $return;
}
function levltext($levl){
$text=' ';
for($i=0;$i<$levl;$i++){
$text.='|===';
}
return $text;
}
function queryCode($query,$key=''){
//因为要把实际路径用作参数来传输,为了安全,所以将参数加密
!$key && $key = '******';//加密密匙
//json_encode,json_decode需要PHP 5 >= 5.2.0
if(is_array($query)){
return StrCode(json_encode($query),'ENCODE',$key);
}else{
return json_decode(StrCode($query,'DECODE',$key),TRUE);
}
}
function StrCode($string,$action='ENCODE',$key=''){
//base64+$key加解密
$string.="";
$action != 'ENCODE' && $string = base64_decode($string);
$code = '';
$key = md5($key);
$keylen = strlen($key); $strlen = strlen($string);
for ($i=0;$i<$strlen;$i++) {
$k = $i % $keylen;
$code .= $string[$i] ^ $key[$k];
}
return ($action!='DECODE' ? base64_encode($code) : $code);
}
function printTable($ePath=''){
global $showpathData,$queryData,$levl,$rootdir;
$dfData = read_dir($rootdir.'/'.$ePath);
$_tDir = $showpathData[$levl];
$levl++;
$levltext = levltext($levl);
foreach($dfData['dirs'] as $_dir){
$queryData['showpath'] = $ePath.'/'.$_dir;
$queryString = queryCode($queryData);
$ext = ($_dir == $_tDir)?'--':'++';
?>
<tr>
<td><?php echo $levltext.$ext;?><a href="?<?php echo $queryString;?>"><?php echo $_dir;?></a></td>
</tr>
<?php
if($_dir == $_tDir){
printTable($ePath.'/'.$_dir);
}
}
foreach($dfData['files'] as $_file){
?>
<tr>
<td><?php echo $levltext;?> <?php echo $_file;?></td>
</tr>
<?php
}
}
//=======================================================================
print <<<EOT
<form action='' method=get>
当前打开:{$nowDir}<br>
主路径:<input value="$rootdir" name='rootdir' size=70>
<input type=submit>
</form>
<hr>
<table width="100%" border="1" cellspacing="0" cellpadding="0">
<tr>
<td> <b>路径</b></td>
</tr>
EOT;
printTable();
print <<<EOT
</table>
EOT;
?>
追问
看了很久  还是没搞懂   太难理解了
追答
传递参数的加解密你先不管,其他的按执行流程依次看,一句句的看,理解每一句做什么的。
个人感觉,这已经是最简单的了,都是按流程的,没有封装。

代码的意思和逻辑都理解不了,给你再简洁的代码又有什么用,越简洁,越难理解。
图材图色tusea
2011-08-25 · 用心创作内容,感谢您的关注
图材图色tusea
采纳数:318 获赞数:1880

向TA提问 私信TA
展开全部
有 asp 的要看看吗?
追问
我不会asp   看不懂  我的程序是php的  看懂了也用不了0 0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式