好久沒寫有意義的東西了....
這次先丟快兩個月前寫的東西,用來走訪資料夾的內容,並且可以設定最大走訪深度和忽略檔案功能
這次先丟快兩個月前寫的東西,用來走訪資料夾的內容,並且可以設定最大走訪深度和忽略檔案功能
/** * @brief Traverse directories and files. * @param $path Start point of traversal. * @param $limit Traverse directory level. * @param $ignore Regular expression of ignore file. */ function listDir( $path = '.', $limit = 0, $ignore = '(^\..*|(.+\.php$)|cgi-bin)' ) { static $level = 0; // Trace back counter. if( $limit == 0 || $level < $limit ) { // If limit is set to zero, or level is lesser than limit, do action. $dirHandler = opendir( $path ); echo "<ul>\n"; if( !ereg( $ignore, '.' ) || !ereg( $ignore, '..' ) ) // Protection. If '.' or '..' runs recursion, PROGRAM WILL CRASH! $ignore = '^\.{1,2}$|'.$ignore; while( false !== ( $file = readdir( $dirHandler ) ) ) { if( !ereg( $ignore, $file ) ) { echo "<li>\n"; if( is_dir( "$path/$file" ) ) { echo "<strong" . ( ( $level == 0) ? ' class="title"' : '' ) . ">$file<strong>\n"; // First level directory's class is "title" $level++; listDir( "$path/$file", $limit, $ignore ); $level--; } else { echo '<a href="' . "$path/$file" . '">' . $file . '</a>' . "\n"; } echo "</li>\n"; } } echo "</ul>\n"; closedir( $dirHandler ); } }View by PHP source
如果因為跳出問題很難看的,可以使用上面的連結。
$path為走訪的起點,預設會從當前所在資料夾開始。
$limit是最大走訪深度,0為預設值,代表沒有限制。
$ignore是黑名單的正則表達式,預設會擋'.'和'..'[?],還有*.php以及cgi-bin資料夾。基本上除非很有把握,否則不要擅自更動。
$limit是最大走訪深度,0為預設值,代表沒有限制。
$ignore是黑名單的正則表達式,預設會擋'.'和'..'[?],還有*.php以及cgi-bin資料夾。基本上除非很有把握,否則不要擅自更動。
想改輸入效果可以更改echo出來的字串。
為什麼不用Apache?因為它的autoindex實在是看得太清楚了。
為什麼不用Apache?因為它的autoindex實在是看得太清楚了。
沒有留言:
張貼留言