$value) { if (isIgnored($value)) { continue; } if ($relPath == '') { $filePath = $value; } else { $filePath = $relPath . DIRECTORY_SEPARATOR . $value; } if (!is_dir(getAbsolutePath($filePath))) { $result = array_merge($result, (array)$filePath); } else if ($recurse) { $result = array_merge($result, getAllFilesUnderAsArray($filePath, $recurse)); } } return $result; } $path = getAbsolutePath($_GET['path']); if (isset($_GET['separator'])) { $separator = $_GET['separator']; } else { $separator = "\n"; } if (!isset($_GET['recurse'])) { $_GET['recurse'] = True; } #Very primitive check if path tries to go above DOCUMENT_ROOT or is absolute if (strpos($_GET['path'], "..") !== False || substr($_GET['path'], 0, 1) == DIRECTORY_SEPARATOR) { return; } #If we don't want realpath to append any prefixes we need to pass it an absolute path $path = realpath(getAbsolutePath($_GET['path'])); $relPath = substr($path, strlen($rootDir) + 1); #If there is an error of some sort it will be output as a part of the answer! foreach (getAllFilesUnderAsArray($relPath, $_GET['recurse']) as $i => $value) { echo "$value$separator"; } ?>