Show alle mappen die in een map en in alle submappen van die map staan

Uit Bizzieman / PHP Wiki
Ga naar: navigatie, zoeken
Toelichting
Deze functie geeft een array() terug met alle namen van alle mappen in de map waarmee je de functie aanroept. Ook worden alle mappen uit de eventueel aanwezige submappen meegenomen. Als er bij de aanroep geen parameter is opgegeven zal de functie werken vanuit de huidige map.
Let op
Roep de functie nooit aan met een ongecontroleerde $var uit gebruikersinput. Bijvoorbeeld $_POST of $_GET. Het is namelijk mogelijk om de gehele server te bekijken met deze functie.

Snippets

<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

// Deze functie geeft een array() terug met alle namen
// van alle mappen in de map waarmee je de functie
// aanroept. Ook worden alle mappen uit de eventueel
// aanwezige submappen meegenomen. Als er bij de aanroep
// geen parameter is opgegeven zal de functie werken
// vanuit de huidige map. LET OP: Roep de functie NOOIT
// aan met een ongecontroleerde $var uit gebruikersinput.
// Bijvoorbeeld $_POST of $_GET. Het is namelijk mogelijk
// om de gehele server te bekijken met deze functie.
function showdirs($map = "./", $return = array())
{
    if(@$dir = opendir($map))
    {
        while (false !== ($file = readdir($dir)))
        {
            if ($file != "." && $file != "..")
            {
                if(is_dir($map . $file))
                {
                    $return[] = $map . $file;
                    // Bij een gevonden submap roept de functie zichzelf
                    // aan om ook die mapinhoud mee te nemen.
                    $return = showdirs($map . $file . "/", $return);
                }
            }
        }
    }
    @closedir($dir);
    return $return;
}

// Functie aanroepen met de mapnaam en aan het eind een / (slash).
$dirinhoud = showdirs('dirname/');

foreach($dirinhoud as $dir)
{
	echo $dir . '<br />';
}
?>

Snippets