PHP İle Dizin İşlemleri

DİZİN İŞLEMLERİ
PHP’de dizin işlemlerini yönetmek için opndir ile readdir komutları kullanılır.Bir dizinin var olup olmadığı is_dir komutu ile anlaşıldığını dosya okuma konusunda işlemiştik.Şimdi bir dizinin içerinde ki dosyaları ve dizinleri nasıl listeleneceğini öğreneceğiz.Bu dizin işlemlerinde tahmin edeceğiniz üzere döngülerden yararlanacağız.Bu dizin işlemleri bazı serverlarda FTP desteği olmayıp dizin işlemleri ile servera dosya transferi, dizin oluşturma veya silem gibi işlemleri yapmanız mümkün.Ama şunuda peşinen belirteyim.Yapacağınız dosya veya dizin oluşturma, silme işlemlerini serverda denemeden önce bu işleri yapma izni verilip verilmediğini öğrenmeniz gerekmektedir.Mesela f2s server bu işlemleri desteklememektedir.Şimdi bir dizinin içerisindeki dosyaları sıralayalım.


$dizin_dosyasi=""; //Buraya dizinin paktını yazabilirsiniz veya boş bırakın
$dizin=opendir($dizin_dosyasi);
while (($dosya= readdir($dizin)) !==false){
print "<li>$dosya\n";
}
closedir($dizin);

Bura görüldüğü üzere ilk olarak dizindosyamızın yerini belirtiyoruz.Buraya sistemin ana dizininin part yonunu yazıyoruz.Eğer bunu yazmazsak boş bırakın ve bu dosyayı nereye kaydettiyseniz o dizinde işlemler yapar.Sonra opendir komutu ile dizinin içerisini açıyoruz.Sonrada bir döngü ile dizinin içerisinde bulunan dosya ve dizinleri listeliyoruz.Daha sonrada açmış olduğumuz dizini closedir komutu ile kapatıyoruz.
Yukardaki örneğimizde bir dizinin içerisinde bulunan dizinleri listeledik.Şimdi dizinin içerisinde bulunan hem dizin hemde dosyaları listeleyelim.Bu örnek aslında yukardaki örneğin aynısı.Sadece döngünün içerisine bir if deyimi ekliyoruz.

<?php
$dizin_dosyasi=""; //Buraya dizinin paktını yazabilirsiniz veya boş bırakın
$dizin=opendir($dizin_dosyasi);
while (($dosya= readdir($dizin)) !==false){
if(is_dir($dosya)){
print "<li><img src=\"../icons/folder.gif\"><a href=$dosya>$dosya</a>\n";
}
elseif(is_file($dosya)){
print "<li><img src=\"../icons/generic.gif\"><a href=$dosya>$dosya</a>\n";
}
}
closedir($dizin);
?>

Burada görüldüğü üzere while döngümüz aynı.Bu döngünün içerisine if deyimlerini kurduk.İlkinde is_dir komutu ile dizinin içerisnde bulunan dizinleri, ikinci if deyimi ile is_file komutu ile dizindeki dosyaları listeliyoruz.Eğer Apache web server kullanıyorsanız ve bu programı ana klasör olan htdocs klasörüne kaydederseniz Klasörlere klasör resmi, dosyalara da dosya resmi ekleniyor.Eğer başka bir server kullanıyorsanız bu resimleri edinip kullanabilirsiniz.
Birazcık yaratıcı zekanızı kullanırsanız bir dosya yönetim programı yapmanız mümkün.Bunun için dizin oluşturma ve silme, vede dosya silme komutlarını bilmeniz gerekmektedir.Bunları aşağıda verdik.İleriki günlerde örnekler kısmına dir dosya yöneticisi programı yapmayı düşünüyoruz.Bu programda dizin oluşturma, dosya veya dizin silme, dosya oluşturma, dosyanın içeriğini yani kodunu değiştirebilme gibi birsürü özelliği barındıracak.


mkdir("dizinin_adı","0777"); 
rmdir("dizinin_adi");
unlink("dosya_adi.php");

Burada 1. komut olan mkdir bir dizin oluşturur.Burada görüldüğü üzere dizinin adını yazdıktan sonra virgülden sonra 0777 rakamını yazdık.Bu UNIX türü işletim sistemlerinde herkezin bu klasörün içerisine girebilmelerini sağlayan bir değerdir.2. komut olan rmdir klasör siler.3. komut olan unlink ise dosya siler.Bu komutları birebir kullanabileceğiniz gibi komutun görevini yapıp yapmadığını sınamak amacıyla if deyimiyle birlikte kullanmanız daha iyi olur.


if(mkdir("rize","0777")):
print "rize adında bir klasör oluşturuldu";
else:
print "Bir hatadan dolayı dizin yaratılamadı";
endif;

Burada görüldüğü üzere bu komutların hepsini bu yöntem ile kullanmanız mümkündür.Şu konuyuda açıklamakta yarar var.Sadece mkdir komutunda iki değer konuluyor.Diğerlerinde tek değer yani sadece dosya veya dizin adını koyuyorsunuz.
Yine tekrarlayayım bu işlemleri yapabilmeniz için serveriniz bu dosya sistemindeki değişiklikleri desteklemesi lazımdır.Aksi takdirde bu işlemler sadece kendi bilgisayarınızda çalışır.Çoğu server gibi www.f2s.com’da bu işlemleri güvenlik amacıyla desteklemiyor.

Be the first to comment

Leave a Reply

Your email address will not be published.


*