Hoje, durante uma das sessões do curso de LAMP que estou a dar na Caixa Mágica Software, tentei fazer um exercício em que um script de PHP pudesse ser usado para listar e navegar nas várias directorias do sistema de ficheiros do sistema.
A solução não me parecia muito complexa, e era directa de implementar. No entanto, e por estranho que pareça, o script listava apenas a directoria de início, e quando se navegava para as sub-directorias, recusava-se a indicar as potenciais sub-directorias existentes.
Depois de voltar para casa e bater um pouco a cabeça, acabei por conceber uma solução que parece funcionar bem sem problemas. Aqui partilho a mesma convosco, pode ser que vos venha a ser útil.
<?
if(isset($_REQUEST['dirname']))
{
$dir = $_REQUEST['dirname'];
}
else
{
$dir = getcwd();
}
echo "<b>".$dir."</b><br>";
$dh=opendir($dir);
if($dh==false)
{
echo "Nao consegui abrir a directoria...";
exit;
}
while((false !== ($entry = readdir($dh))))
{
if(isset($_REQUEST['dirname']))
$fileentry = $dir.$entry;
else
$fileentry = $entry;
if(is_dir($fileentry))
echo '<b><a href="webexplorer.php?dirname='.$dir.'/'.$entry.'/">'.$entry.'</a></b><br>';
else
{
echo $entry."<br>";
}
}
closedir($dh);
?>





on Apr 29th, 2009 at 10:01 am
E é propositado poder navegar para qualquer directório do sistema com esse código passando o dir pelo parametro “dirname”?
)
Hugz, Luís
Reply
Carlos Serrao Reply:
April 29th, 2009 at 10:20 am
Sim, é mesmo propositado… embora do ponto de vista de segurança seja um buraco de todo o tamanho. De qq forma, a segurança não era o objectivo do exercício em causa. Cps,
Reply
on Apr 29th, 2009 at 7:25 pm
só uma sugestão: se calhar com uma função recursiva ficava espectacular! e arrumadinho.
my 2cs N.
Reply
Carlos Serrao Reply:
April 29th, 2009 at 7:33 pm
Yeap, tens razão, eu depois vou tentar fazer uma versão recursiva. Assim, que tenha tempo faço isso.
CHeers.
Reply