还有个错误就是无法正确的转到上级目录 函数貌似有错!

解决方案 »

  1.   

    <?php
    error_reporting(7);
    $nowpath=$_POST['dir']?$_POST['dir']:$_SERVER['DOCUMENT_ROOT'];
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>File System</title>
    </head>
    <script type="text/javascript" language="javascript">
    function godir(dir){
      var obj=document.getElementById("dir");
      var fobj=document.getElementById("f1");
      obj.value=dir;
      fobj.submit();
    }
    </script>
    <body><form name='f1' id="f1" method='post' action='<?php getname();?>'>
    <input type='text' name='dir' id="dir" value='<?php echo $nowpath?>' size='20' />
    <input type='submit' value='Go' />
    </form>
    <?php
    listall($nowpath);
    ?>
    </body>
    </html>
    <?php
    //Face
    function face($size,$str){
      echo "<font face=wingdings size=".$size.">".$str."</font>";
    }
    //GetName
    function getname(){
      $url = $_SERVER['PHP_SELF']; 
      $filename = end(explode('/',$url)); 
      echo $filename;  
    }
    //GetPath
    function getpath(){
     echo $_SERVER['DOCUMENT_ROOT'].$_SERVER['PHP_SELF'];
    }
    //GetUpPath
    function getuppath($dir) {
        $pathdb = explode('/', $dir);
        $num = count($pathdb);
        if ($num > 2) {
            //unset($pathdb[$num-1],$pathdb[$num-2]);//不知道你为什么要向上减2层...
            unset($pathdb[$num-1]);
        }
        $uppath = implode('/', $pathdb).'/';
        $uppath = str_replace('//', '/', $uppath);
        return $uppath;
    }
    //ListDir
    function listdir($dir){
      if(substr($dir,-1)=="/"){ 
        $dir=substr($dir,0,-1); 
      } 
      if(!file_exists($dir)||!is_dir($dir)){ 
        return false; 
      } 
      $fso = opendir($dir);
      echo "<a href=javascript:godir(\"".getuppath($dir)."\")>";
      face(5,"1");
      echo "</a><br />";
      while (false !== ($dirs = readdir($fso))) {
        if (is_dir($dirs) && $dirs != "." && $dirs != ".."){
          echo "<a href='javascript:godir(\"".$dir."/".$dirs."\")'>";
          face(5,"0");
          echo $dirs."</a><br/>";
        }
      }
      closedir($fso);
    }
    //ListFile
    function listfile($dir){
      $fso=opendir($dir);
      while (false !== ($files = readdir($fso))) {
      if (is_file($files)){
        Face(5,"4");
        echo $files."<br/>";
        }
      }
      closedir($fso);
    }
    //ListAll
    function listall($dir){
    ChDir($dir);//ChDir标识哪一个目录或文件夹变成新的默认目录或文件夹。
       listdir($dir);
       listfile($dir);
    }
    ?>