PHP liste dizinleri ve dosyaları

4 Cevap php

Ne kullanıcı açmak için üzerine tıklayabilirsiniz dizinlerin bir listesini görüntüler bir sayfa için en kolay yol olurdu, nerede daha dizinleri olacak ya da sonunda indirmek ve hepsi aynı sayfada ne var dosyaları?

4 Cevap

Temel bir şey muhtemelen sadece o klasör için bir. Htaccess 'Seçenekler + İndeksler' ekleyerek daha iyi olur. Eğer daha karmaşık bir şey istiyorum ve PHP5 üzerinde çalışan Ancak bunu gerçekleştirmek için Directory Iterator kullanabilirsiniz. Dikkat edilmesi gereken en önemli şey güvenliktir.

Sen do not sadece $ _REQUEST içine dizin yolunu dökümü ve ardından körü körüne kullanıcının o dizine yük izin istiyorum. Eğer, örneğin, sadece istek değişen ve bütün / var dizini görmek isteyen bazı birini önlemek için yerinde bazı güvenlik sağlamak gerekir. Bunu yapmanın en iyi yolu sadece docroot için geçerli dosya / klasör akrabası geçmek ve herhangi .. bu yüzden bazı biri sadece .. / diyemeyiz.. / Var ya da benzer bir şey şerit emin olmaktır.

Klasöründen index.php kaldırmak ve htacceess bu klasör ve alt klasörler için dizin tarama izin vermek için.

. Htaccess dosyasında bu koyun:

Options +Indexes

Bu PHP doğal bunu nasıl olduğunu.

Aşağıdaki etkili bir dizin göz sağlayacak bağlantıları, ana dizinleri ve alt dizinleri bir dizi oluşturur.

/**
* Function echos all files in a $directory.
**/
function dirList ($directory) {

    $dir = opendir($directory);
    while ($file = readdir($dir )) {
        echo "<div><a href='?targ=" . $directory . DIRECTORY_SEPARATOR . "$file'>$file</a></div>";
    }
    closedir($dir);
    return $results;
}

// If the targ variable in the query string is a directory, list its contents.
if( is_dir( $_REQUEST[ "targ" ] ) )dirList($_REQUEST[ "targ" ]);

// If the targ variable in the query string is a file, show its values.
elseif ( is_file( $_REQUEST[ "targ" ] ) ) echo file_get_contents( $_REQUEST[ "targ" ] );

// Othewise, use the current file's directory as a seed.
else dirList( dirname( __FILE__ ) );