显示指定目录列表的PHP程序

<?php
if(!isset($rootdir))
{
print 
"<form action=$PHP_SELF method=\"POST\">";
print 
"<br><h2>输入欲查询目录名:</h2>";
print 
"<input type=text name=rootdir value=\"c:/wwwpub\">";
print 
"<input type=submit value=\"确定\">";
print 
"</form>";
exit;
}

$spacenum=0;     //文件列表退格计数
$filenum=0;
$allfilesize=0;
$subdirnum=0;
echo 
"<font color=blue>$rootdir</font><br>";
myreaddir($rootdir);
echo 
"<br><br>共计子目录数:".$subdirnum."<br>";
echo 
"共计文件数:".$filenum."<br>";
echo 
"占用磁盘空间:$allfilesize<br>";
$freespace=diskfreespace("/");
echo 
"磁盘剩余空间:$freespace<br>";
echo 
"<center><a href=\"$PHP_SELF\">返回</a></center>";

function 
myreaddir($subdir)   //目录遍历
{
  global 
$rootdir,$spacenum,$filenum,$subdirnum,$allfilesize;
  @
chdir($subdir) or die ("error:could not change to this directory!");
  
$space=chspacenum();        //取得文件列表前导空格字串
  
$dirobject=dir($subdir);
  while (
$file=$dirobject->read())
  {
    if(
is_dir($file))         //如果是一个目录名,则。。。
      
{
      if(
$file=="." or $file=="..")   //"."和".."作为文件显示,但不参于计数
        
{
        echo 
$space.$file."<br>";
        continue;
        }
      echo 
$space."<font color=blue>[".$file."]</font>"."<br>";
      
$subdirnum++;
      
$spacenum++;    //增加前导空格计数
      
myreaddir($subdir."/".$file);   //关键的递归调用,进入子目录
      
$spacenum--;
      continue;
      }
    echo 
$space.$file."<br>";
    
$allfilesize+=filesize($file);
    
$filenum++;
  }
  if(
$subdir!=$rootdirchdir("..");
  return;
}

function 
chspacenum()         //生成文件列表前导空格字串
{
  global 
$spacenum;
  
$space="| ";
  for (
$i=0;$i<$spacenum;$i++)
  {
     
$space.="| ";
  }
  return 
$space;
}
?>