Php ile Klasör ve Dosya İşlemleri

 bcakir
 15 Kasım 2011
 Php

Merhaba arkadaşlar, daha önce sunucuya dosya yükleme ve silme işlemlerini anlatmıştım. Bu yazımda ise klasör ve dosya işlemlerini anlatacağım. Bu uygulama dosya ve dizin oluşturmayı, silmeyi ve listelemeyi içerecek. Bu yazım ile öncekini birleştirerek kolayca içerik yönetim (file manager) uygulaması elde edebilirsiniz. Uygulamamızı iki kısımdan oluşacak. Html ile sadece dosya veya klasör oluşturmak için isim bilgisini alma ve gönderme işlemini yapacağız. Php ile ise geriye kalan bütün bölümleri; yani, dosya ve dizin kontrolü, oluşturma, listeleme ve silme işlemlerinin hepsini yapacağız. Uygulamamızın içeriği bu şekilde olacak, geliştirme işlemine başlayalım.

<!DOCTYPE html>
<html>
<head>
<title>Php Dizin ve Dosya İşlemleri</title>
</head>
<body>

<form action="index.php" method="post">
<div>Dizin İsmi: <input type="text" name="dizin_ac" /></div>
<div>Dosya İsmi: <input type="text" name="dosya_ac" /></div>
<input type="submit" name="submit" value="Oluştur" />
</form>

</body>
</html>

Dosya ve dizin oluşturmak için gerekli form elemanlarını index.php sayfamıza ekledik. Uygulamamızı sadece bir sayfada (index.php) geliştireceğiz. Şimdi de Php ile geri kalan bölümleri yapalım.

<?php
//İşlem yapılacak dizin yolunu girin
//nokta ('.') kodun çalıştığı dizin, uploads ('uploads/') klasörü)
$dizin_yolu = opendir('.');

//Dosya ve Dizin Oluşturma
if(isset($_POST['submit'])){
    if($_POST['dizin_ac']!=null){
        $ac = $_POST['dizin_ac'];
        @mkdir($ac, 0700);
    }
    if($_POST['dosya_ac']!=null){
        $ac = $_POST['dosya_ac'].'.txt';
        @touch($ac);
    }
}

//Dosya ve Dizin Silme
if(isset($_GET['dosya'])){
    $sil = $_GET['dosya'];
    @unlink($sil);
}
if(isset($_GET['dizin'])){
    $sil = $_GET['dizin'];
    @rmdir($sil);
}

//Dosya ve Dizin Listeleme
if($dizin_yolu){
    while ($dosya = readdir($dizin_yolu)){
        if($dosya != '.' && $dosya != '..'){
            if(is_dir($dosya)){
                echo "<strong>Klasör :</strong>";
                echo $dosya." <a href='index.php?dizin={$dosya}'>Sil</a><br />";
            }
            if(is_file($dosya)){
                echo "<strong>Dosya: </strong>";
                echo $dosya." <a href='index.php?dosya={$dosya}'>Sil</a><br />";
            }
        }
    }
}
?>

Uygulamayı açık ve basit kodlamayla anlattığımdan dolayı bölüm bölüm açıklamanın yeterli olacağını düşündüm. Fakat takıldığınız bir kısım olursa sorabilirsiniz. Dosya ve dizinler ile ilgili yapılabilecek başka işlemlerde var fakat bu uygulamada oluşturma, listeleme ve silme işlemini kullandık. Böylece bir yazımızın daha sonuna geldik. Gelecek yazılarda diğer dosya ve dizin işlemlerini içeren örnek uygulama yazmayı düşünüyorum. Yararlı olması dileğiyle.

 2.029 Okunma

Bu yazıya 8 yorum yapılmış.

  1. güzel bir çalışma olmuş, elinize sağlık, dosya ve klasör oluşturduktan keşke tüm dizini değilde sadece oluşturduğumuz dosya ve klasörün silmek üzere gösterseydiniz, yanlışlıkla, index.html ve index.php ‘de silinebiliyor o zaman safya bir kez kullanılır hale gelir.

    • Ben sadece mantığını anlatmaya çalıştım ama yukarıda dizin yolu gösterin dediğim yerde bir klasör yolu girip bu işlemleri onun içindeki dosyalar ve klasörler için yapabiliriz ya da index.php sayfasını listeleme gibi if else kontrolü de kolayca eklenebilir.

  2. ben pek anlamadım ama aynısını yapınca oldu sadece şu index.php yi silmesini istemesem yani yanında sil kodu çıkmasın istesem nasıl yapabilirim yardım edermisiniz lütfen..

    • yukarıda if kontrolünü yazacağım şeklide değiştirirsen istediğin olacaktır.
      if($dosya != ‘.’ && $dosya != ‘..’ && $dosya != ‘index.php’){

  3. öncelikle ilginize ve aynı zamanda cevabınıza çok teşekkür ederim ben baya acemiyim ama ögrenmeyi cok istiyorum neyse konuya geleyim öncelikle dosya ismi ve dizin ismini yazdıgımda oluştur dedigimde sadece dosya ismini oluşturuyor textboxlar boşalıyor sonrasında sayfayı yeniledigimde dosya ismi tekrardan oluşuyor ve birde klasor ismi oluşuyor toplamda 3 adet isim oluyor neden acaba?
    birde sizden ricam orda neler yaptıgınıza dair satır satır açıklama eklermisiniz?

  4. herkese merhaba..
    localhost dizinine “alistirma” adında; içinde php sayfa örneklerinin bulunduğu bir klasör oluşturdum. Bunları tek tek link vermek yerine (bu örnekleri tek tek görüntülemek yerine) bu klasörün içindekilere http://localhost/link.php sayfasından nasıl erişim sağlayabilirim…

    • //nokta (‘.’) kodun çalıştığı dizin, uploads (‘uploads/’) klasörü)
      $dizin_yolu = opendir(‘.’);
      şeklinde olan kısmı, bu uygulamanın çalıştığı yeri göz önünde bulundurarak düzenle

  5. Cevap için teşekkürler..

Yazı hakkında görüşlerinizi belirtmek istermisiniz?

Daha fazla Php
Kapat