Eğitim

Ders 5: PHP ile Dosya İşlemleri

Giriş

PHP, dosya işlemleri yapmak için geniş bir yelpazede yerleşik fonksiyonlar sunar. Bu işlemler arasında dosya okuma, yazma, silme ve dosya bilgilerine erişme gibi temel işlevler yer alır. Bu makalede, PHP ile dosya işlemleri nasıl yapılır, hangi fonksiyonlar kullanılır, dosya yönetimiyle ilgili en iyi uygulamalar nelerdir, detaylı olarak ele alınacaktır.

Dosya Açma ve Kapama

PHP’de bir dosyayı açmak için fopen() fonksiyonu kullanılır. Bu fonksiyon, dosyayı belirli bir modda açar ve dosya üzerinde işlem yapabilmeniz için bir dosya işaretçisi (file pointer) döndürür.

Yapısı:

$dosya = fopen("dosya.txt", "r");

Bu örnekte, dosya.txt adlı dosya okuma modunda (r) açılmıştır.

Modlar:

  • r: Sadece okuma için dosya açar. Dosya başlangıcına yerleşir.
  • w: Yazma için dosya açar. Dosya içeriğini siler ve başlangıçtan yazar.
  • a: Yazma için dosya açar. Dosya sonuna ekler.
  • x: Yazma için dosya açar. Dosya mevcutsa açmaz.
  • r+: Okuma ve yazma için dosya açar. Dosya başlangıcına yerleşir.
  • w+: Okuma ve yazma için dosya açar. Dosya içeriğini siler ve başlangıçtan yazar.
  • a+: Okuma ve yazma için dosya açar. Dosya sonuna ekler.
  • x+: Okuma ve yazma için dosya açar. Dosya mevcutsa açmaz.

Dosya işlemi bittikten sonra dosyayı kapatmak önemlidir. Bunun için fclose() fonksiyonu kullanılır:

fclose($dosya);

Dosya Okuma

PHP’de bir dosyayı okumak için birkaç farklı yöntem vardır:

  1. fread(): Belirli bir byte sayısını okumak için kullanılır. $dosya = fopen("dosya.txt", "r"); $icerik = fread($dosya, filesize("dosya.txt")); fclose($dosya); echo $icerik; Bu kod, dosya.txt dosyasının tamamını okur ve ekrana yazdırır.
  2. fgets(): Dosyadan bir satır okumak için kullanılır. $dosya = fopen("dosya.txt", "r"); while (!feof($dosya)) { $satir = fgets($dosya); echo $satir . "<br>"; } fclose($dosya); Bu kod, dosyadaki her satırı sırayla okur ve ekrana yazdırır.
  3. file_get_contents(): Dosyanın tamamını bir dize olarak okumak için kullanılır. $icerik = file_get_contents("dosya.txt"); echo $icerik; file_get_contents() fonksiyonu, tüm dosyayı tek bir satırda okur ve döndürür.

Dosya Yazma

Dosyaya veri yazmak için fwrite() fonksiyonu kullanılır. Bu fonksiyon, belirtilen dosya işaretçisine (file pointer) veriyi yazar.

Örnek:

$dosya = fopen("yeni_dosya.txt", "w");
fwrite($dosya, "Bu bir deneme yazısıdır.");
fclose($dosya);

Bu kod, yeni_dosya.txt adlı dosyayı oluşturur (eğer mevcut değilse) ve içine belirtilen metni yazar.

Dosya Silme

Bir dosyayı silmek için PHP’de unlink() fonksiyonu kullanılır.

Örnek:

if (file_exists("yeni_dosya.txt")) {
unlink("yeni_dosya.txt");
echo "Dosya silindi.";
} else {
echo "Dosya bulunamadı.";
}

Bu kod, yeni_dosya.txt dosyasını bulur ve siler.

Dosya Bilgilerini Alma

PHP, bir dosyanın bilgilerini almak için çeşitli fonksiyonlar sunar:

  1. file_exists(): Dosyanın var olup olmadığını kontrol eder. if (file_exists("dosya.txt")) { echo "Dosya mevcut."; } else { echo "Dosya mevcut değil."; }
  2. filesize(): Dosyanın boyutunu bayt cinsinden döndürür. $boyut = filesize("dosya.txt"); echo "Dosya boyutu: " . $boyut . " bayt";
  3. filemtime(): Dosyanın son değiştirilme zamanını döndürür. $zaman = filemtime("dosya.txt"); echo "Son değiştirilme zamanı: " . date("d-m-Y H:i:s", $zaman);
  4. is_readable(): Dosyanın okunabilir olup olmadığını kontrol eder. if (is_readable("dosya.txt")) { echo "Dosya okunabilir."; } else { echo "Dosya okunabilir değil."; }
  5. is_writable(): Dosyanın yazılabilir olup olmadığını kontrol eder. if (is_writable("dosya.txt")) { echo "Dosya yazılabilir."; } else { echo "Dosya yazılabilir değil."; }

Dosya İşlemleri İçin Güvenlik Önlemleri

Dosya işlemleri yaparken aşağıdaki güvenlik önlemlerini göz önünde bulundurmalısınız:

  1. Güvenli Dosya Yolları Kullanımı: Dosya yollarını kullanıcı girdisine dayalı olarak belirlemekten kaçının. Bunun yerine, sabit yollar veya güvenli yollar belirleyin.
  2. Dosya İzinleri: Dosya izinlerini doğru bir şekilde ayarlayın. Gereksiz okuma/yazma izinlerinden kaçının.
  3. Dosya Tipi Kontrolü: Özellikle yükleme işlemlerinde dosya tipini kontrol edin. Sadece izin verilen dosya türlerinin yüklenmesine izin verin.
  4. Dosya Boyutu Kontrolü: Büyük dosyaların sunucuya yüklenmesini önlemek için dosya boyutlarını kontrol edin ve sınırlamalar getirin.

Ödev

Bu derste öğrendiklerinizi pekiştirmek için aşağıdaki ödevleri yapmanız gerekmektedir:

  1. Kişisel Günlük Uygulaması: Bir kullanıcıdan alınan metinleri dosyaya yazan ve daha sonra bu dosyadan okuma yapan basit bir günlük uygulaması geliştirin. Uygulamanızın yeni günler için ekleme yapabilmesi ve eski girdileri okuyabilmesi gerekiyor.
  2. Dosya Silme Uygulaması: Kullanıcıdan alınan dosya adını silen bir PHP programı yazın. Silme işleminden önce dosyanın var olup olmadığını kontrol edin.
  3. Dosya Listeleme: Bir dizindeki tüm dosyaları listeleyen bir PHP programı yazın. Bu program, dosya isimleri ile birlikte boyutlarını ve son değiştirilme tarihlerini de gösterecek.
  4. Yedekleme Uygulaması: Bir dosyanın içeriğini başka bir dosyaya kopyalayan bir PHP programı yazın. Kopyalama işleminden sonra orijinal dosyayı silmeyin, sadece yedeğini oluşturun.

Bu ödevler, dosya işlemleri konusunda pratik yapmanızı sağlayacak ve dosya yönetimi ile ilgili temel becerilerinizi geliştirmenize yardımcı olacaktır. Dosya işlemleri, birçok web uygulamasında kritik bir rol oynar ve bu beceriler, PHP ile ileri düzey projeler geliştirirken size büyük avantaj sağlayacaktır.