Php başlığı altında bu yazımızdaki konumuz bir dizindeki dosyaları (klasörleri ve dosyaları ayrı ayrı) listelemek. Bu temel üzerine neler yapılabilir?
- Listelediğiniz dosyalara link vererek basit bir download scripti yapabilirsiniz.
- Sadece resimlerin bulunduğu bir dizini listeleyerek bir fotoğraf galerisi oluşturabilirsiniz.
- Kendinizi biraz daha geliştirerek ve dosya silme, düzenleme, upload etme gibi özellikler katarak online bir dosya yönetimi betiği (file manager) yazabilirsiniz.
Konuya kodumuzla başlayalım.
[php]<?php
$dizin = opendir(‘.’);
if ($dizin)
{ while ($dosya = readdir($dizin))
{
if($dosya==’.’ OR $dosya==’..’) // . ve .. ‘ları siler
{$dosya=”;}
if(is_dir($dosya)) // sadece klasörleri seçer
{ $klasorler[]=$dosya;} //klasörleri ‘klasörler’ isimli diziye ekler
if(!is_dir($dosya)) // sadece dosyaları seçer
{ $dosyalar[]=$dosya;} //klasörleri ‘klasörler’ isimli diziye ekler
} }
sort($klasorler); // klasörler dizisindekileri ismine göre sıraya sokar
sort($dosyalar); // dosyalar dizisindekileri ismine göre sıraya sokar
echo "Klasörler –> ";
foreach ($klasorler as $tekklasor)
{echo $tekklasor.’- ‘; }
echo "Dosyalar–> ";
foreach ($dosyalar as $tekdosya)
{ echo $tekdosya.’- ‘; }
?>[/php]
2 – Dizinimizi belirliyoruz. Tek nokta (.) dosyanın bulunduğu dizin anlamına gelir.
3 – Dizin doğru ise aşağısında belirtilen işlemleri yerine getireceğiz.
4 – Bir döngü oluşturup, dizinde bulunun bütün öğeleri tek tek çağırıyoruz ve ‘$dosya’ değişkenine atıyoruz.
6,16 – Bu satırlar arasında neler yapıldığı kodda yanlarına yazdım
18 ve 23 – Bu satırlarda ekrana “Klasörler” ve “Dosyalar” yazıyoruz.
20,21 ve 24,25 – Bu satırlarda foreach kullanarak dizerdeki elemanları tek tek ekrana yazdırıyoruz.
WordPressin anadizininde bu kodun ekran çıktısı yaklaşık olarak şöyle olacaktır.
Klasörler–> wp-admin – wp-content – wp-includes
Dosyalar –> index.php – wp-atom.php- wp-blog-header.php- wp-comments-post.php
Aslına bakarsanız bu kodu daha güzel görünmesi için html etiketleriyle süslemiştim fakat o zaman bu makalede o etiketler görünmüyorlardı. Mesela her dosyayı ve klasörü br etiketiyle alt alta yazdırmıştım ama burada yazarken görünüm bozulduğu için böyle yan yana yazılan şeklini anlattım.
Yukarıda kullandığım bütün dizi fonksiyonlarının nasıl kullanıldığını ve örneklerini burada bulabilirsiniz.