PHP Dizin Listeleme Kodu Arızası

2 Cevap php

Ben alt dizinlere tüm dosyaları listelemek için bir komut dosyası yazmak için çalıştı ve ben dosyaları bir dizin olup olmadığını görmek için kontrol dahil etmezseniz vb .. komut çalışıyor. Kod hataları üretmek değil ama söyleyerek metin yüz hatlarını oluşturur "Directory Listing of." yerine ne ben bekliyordum. Neden bu herhangi bir fikir çalışmıyor?

<?php

//define the path as relative
$path = "./";

function listagain($pth)
{
//using the opendir function
$dir_handle = @opendir($pth) or die("Unable to open $pth");

echo "Directory Listing of $pth<br/>";

//running the while loop
while ($file = readdir($dir_handle)) 
{
    //check whether file is directory
    if(is_dir($file))
    {
    	//if it is, generate it's list of files
    	listagain($file);
    }
    else
    {
    	if($file!="." && $file!="..")
    	echo "<a href='$file'>$file</a><br/>";
    }
}
//closing the directory
closedir($dir_handle);
}

listagain($path)

?>

2 Cevap

İlk enties . ve .. geçerli ve ana dizin respectivly bakın. Yani sonsuz özyinelemeye olsun.

Önce dosya türünü kontrol bunun için önce kontrol etmelisiniz:

if ($file!="." && $file!="..") {
    if (is_dir($file)) {
        listagain($file);
    } else {
        echo '<a href="'.htmlspecialchars($file).'">'.htmlspecialchars($file).'</a><br/>';
    }
}

Sorun, değişken $file yolunun sadece temel isme ihtiva etmektedir. Yani, $pth.$file kullanmanız gerekir.