Php 8 Dosyanın Klasöre Kayıt Edilmesi

Php 8 Dosyanın Klasöre Kayıt Edilmesi

PHP 8 ile dosya yükleme ve klasöre kayıt işlemi, kullanıcıların form aracılığıyla bir dosya yüklemesini sağlayan ve bu dosyayı belirli bir klasöre kaydeden bir süreçtir. Aşağıda bu işlemi adım adım nasıl gerçekleştireceğinizi açıklıyorum.

1. HTML Formu Oluşturma

Öncelikle bir HTML formu oluşturarak kullanıcıların dosya yükleyebilmesini sağlıyoruz. Formda enctype="multipart/form-data" kullanılması gereklidir; bu, dosya yüklemeleri için gereklidir.

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Dosya Yükleme</title> </head> <body> <h2>Dosya Yükleme Formu</h2> <form action="upload.php" method="POST" enctype="multipart/form-data"> <label for="file">Dosya Seçin:</label> <input type="file" name="file" id="file" required> <br> <br> <input type="submit" value="Dosyayı Yükle"> </form> </body> </html>

2. PHP Dosya Yükleme İşlemi

Formu işlemek ve dosyayı belirtilen klasöre kaydetmek için bir PHP dosyasına ihtiyacınız var. Bu örnekte upload.php adında bir dosya kullanıyoruz. Aşağıda PHP'deki dosya yükleme işlemi adım adım açıklanmıştır.

2.1. Dosyanın Klasöre Kaydedilmesi

Kullanıcı tarafından yüklenen dosyalar geçici bir dizine kaydedilir. move_uploaded_file() fonksiyonunu kullanarak dosyayı kalıcı olarak istediğiniz klasöre taşıyabilirsiniz.

<?php if ($_SERVER['REQUEST_METHOD'] == 'POST') { // Yükleme dizini $uploadDir = 'uploads/'; // Yüklenen dosyanın adı ve yolu $uploadFile = $uploadDir . basename($_FILES['file']['name']); // Dosyanın geçici yüklenme yeri $tmpFile = $_FILES['file']['tmp_name']; // Yükleme işlemi kontrolü if (move_uploaded_file($tmpFile, $uploadFile)) { echo "Dosya başarıyla yüklendi: " . htmlspecialchars(basename($_FILES['file']['name'])); } else { echo "Dosya yükleme sırasında bir hata oluştu."; } } ?>

3. Önemli Güvenlik Kontrolleri

Dosya yükleme işlemi, güvenlik açısından dikkat gerektiren bir işlemdir. Kullanıcıların zararlı dosyalar yüklemesini önlemek için çeşitli kontroller yapmak gerekir.

3.1. Dosya Türü Kontrolü

Kullanıcının yalnızca belirli dosya türlerini yükleyebilmesini sağlamak için dosya türünü kontrol edebilirsiniz. Örneğin, sadece resim dosyalarına izin vermek için MIME türünü kontrol edelim:

$allowedTypes = ['image/jpeg', 'image/png', 'image/gif']; $fileType = mime_content_type($tmpFile); if (!in_array($fileType, $allowedTypes)) { die("Yalnızca JPEG, PNG veya GIF dosyalarına izin veriliyor."); }

3.2. Dosya Boyutu Kontrolü

Yüklenecek dosyanın boyutunu kontrol ederek büyük dosyaların yüklenmesini engelleyebilirsiniz. PHP'de dosya boyutunu $_FILES['file']['size'] ile alabilirsiniz.

$maxSize = 2 * 1024 * 1024; // 2 MB if ($_FILES['file']['size'] > $maxSize) { die("Dosya boyutu 2MB'den büyük olamaz."); }

3.3. Dosya Adı ve Çakışma Kontrolü

Eğer aynı isimde bir dosya daha önce yüklenmişse, bu yeni dosya eski dosyanın üzerine yazabilir. Bu yüzden her dosya için benzersiz bir isim oluşturabilirsiniz. Örneğin, dosya adına benzersiz bir ID ekleyebilirsiniz:

$uniqueName = uniqid() . "_" . basename($_FILES['file']['name']); $uploadFile = $uploadDir . $uniqueName;

3.4. Klasörün Var Olup Olmadığını Kontrol Etme

Dosyaları kaydetmek istediğiniz klasörün mevcut olup olmadığını kontrol edebilir ve yoksa klasörü oluşturabilirsiniz:

if (!is_dir($uploadDir)) { mkdir($uploadDir, 0755, true); // Klasör oluşturma }

4. Tam Örnek: PHP 8 Dosya Yükleme ve Klasöre Kayıt

Aşağıda dosya türü, boyut kontrolü ve güvenlik önlemleri içeren tam bir örnek bulunmaktadır:

<?php if ($_SERVER['REQUEST_METHOD'] == 'POST') { $uploadDir = 'uploads/'; // Yüklenen dosyanın adı ve geçici yolu $tmpFile = $_FILES['file']['tmp_name']; $fileName = basename($_FILES['file']['name']); $uploadFile = $uploadDir . uniqid() . "_" . $fileName; // Dosya türü kontrolü (yalnızca resim dosyaları) $allowedTypes = ['image/jpeg', 'image/png', 'image/gif']; $fileType = mime_content_type($tmpFile); if (!in_array($fileType, $allowedTypes)) { die("Yalnızca JPEG, PNG veya GIF dosyalarına izin veriliyor."); } // Dosya boyutu kontrolü (maksimum 2MB) $maxSize = 2 * 1024 * 1024; // 2MB if ($_FILES['file']['size'] > $maxSize) { die("Dosya boyutu 2MB'den büyük olamaz."); } // Klasörün var olup olmadığını kontrol etme if (!is_dir($uploadDir)) { mkdir($uploadDir, 0755, true); } // Dosyayı klasöre taşıma if (move_uploaded_file($tmpFile, $uploadFile)) { echo "Dosya başarıyla yüklendi: " . htmlspecialchars($fileName); } else { echo "Dosya yükleme sırasında bir hata oluştu."; } } ?>

5. Sonuç

Bu rehberde, PHP 8 kullanarak dosyaların bir klasöre nasıl güvenli bir şekilde kaydedileceğini öğrendik. Güvenlik açısından önemli adımlar atmak, özellikle dosya türü ve boyutu kontrolü gibi önlemler almak, web uygulamanızın güvenliğini artırır. Ayrıca, kullanıcı deneyimi açısından da doğru yönlendirmeler yaparak dosya yükleme işlemini optimize edebilirsiniz.



Yorum Ekle

Üzerine gel