Dosya Yüklemenin Temelleri
Dosya yükleme, web uygulamalarında yaygın bir özelliktir. Kullanıcıların bilgisayarlarından sunucuya dosya gönderme olanağı sağlar. PHP, bu işlemi kolaylaştıran yerleşik fonksiyonlar sunar. Bu fonksiyonlar arasında en sık kullanılanları `$_FILES` süper globali ve `move_uploaded_file()` fonksiyonudur.
HTML Formu Oluşturma
Dosya yüklemek için önce bir HTML formu oluşturulması gereklidir. Formun `enctype` özelliği “multipart/form-data” olarak ayarlanmalıdır. Bu, form verilerinin dosya içerebileceğini belirtir. Aşağıda örnek bir HTML formu verilmiştir:
“`html
“`
PHP Tarafında Dosya Yükleme İşlemi
Form gönderildiğinde, PHP’de dosya yükleme işlemi gerçekleştirilir. Bu işlem `$_FILES` süper globali ile yapılır. `$_FILES` dizisi, dosya yükleme formunda belirtilen dosyanın bilgilerini içerir. Bu bilgiler arasında dosyanın adı, tipi, boyutu ve hata kodu bulunmaktadır.
Aşağıdaki örnekte, `upload.php` dosyasında dosyanın nasıl yükleneceğine dair temel bir kod parçacığı bulunmaktadır:
“`php
if ($_SERVER[“REQUEST_METHOD”] == “POST”) {
$target_dir = “uploads/”;
$target_file = $target_dir . basename($_FILES[“fileToUpload”][“name”]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));
// Dosya boyutu kontrolü
if ($_FILES[“fileToUpload”][“size”] > 500000) {
echo “Üzgünüm, dosya çok büyük.”;
$uploadOk = 0;
}
// Dosya tipi kontrolü
$allowedTypes = [‘jpg’, ‘png’, ‘jpeg’, ‘gif’];
if (!in_array($imageFileType, $allowedTypes)) {
echo “Üzgünüm, sadece JPG, JPEG, PNG ve GIF dosyaları yüklenebilir.”;
$uploadOk = 0;
}
// Hata kontrolü
if ($_FILES[“fileToUpload”][“error”] != 0) {
echo “Üzgünüm, bir hata oluştu.”;
$uploadOk = 0;
}
// Dosya yüklemesi
if ($uploadOk == 1) {
if (move_uploaded_file($_FILES[“fileToUpload”][“tmp_name”], $target_file)) {
echo “Dosya “. htmlspecialchars(basename($_FILES[“fileToUpload”][“name”])) . ” başarıyla yüklendi.”;
} else {
echo “Üzgünüm, dosya yüklemesinde bir hata oluştu.”;
}
}
}
“`
move_uploaded_file() Fonksiyonu
`move_uploaded_file()` fonksiyonu, geçici olarak yüklenecek dosyanın yolunu ve hedef dosya yolunu alır. Bu fonksiyon, dosyanın güvenli bir şekilde belirtilen konuma taşınmasını sağlar. Eğer dosyanın geçerli bir yükleme olup olmadığını kontrol etmek istenirse, bu aşamadan önce hata kontrolü yapılması önemlidir.
Güvenlik Önlemleri
Dosya yükleme işlemi sırasında güvenlik son derece önemlidir. Kullanıcıların kötü amaçlı dosyalar yüklemesi riskine karşı çeşitli önlemler alınmalıdır. Bu önlemler arasında dosya türü kontrolü, dosya boyutu sınırlandırması ve yüklenen dosyaların belirli bir dizine kaydedilmesi yer almaktadır. Ayrıca, kullanıcıların yüklediği dosyaların isimlerinin değiştirilmesi, dosya çakışmalarının önüne geçilmesine yardımcı olur. Örneğin, dosya isminin UUID veya timestamp ile değiştirilmesi önerilmektedir.
Dosya Yükleme Hataları
Dosya yükleme işlemi sırasında birkaç hata meydana gelebilir. PHP, dosya yükleme işlemi hakkında bilgi veren hata kodları sağlar. Her bir hata kodu, farklı bir durumu temsil eder. Örneğin:
– `UPLOAD_ERR_OK` (0): Her şey yolunda gitti.
– `UPLOAD_ERR_INI_SIZE` (1): Yüklenmeye çalışılan dosya, php.ini dosyasında belirtilen maksimum dosya boyutundan daha büyük.
– `UPLOAD_ERR_FORM_SIZE` (2): Yüklenmeye çalışılan dosya, HTML form dökümünde belirtilen maksimum dosya boyutundan daha büyük.
– `UPLOAD_ERR_PARTIAL` (3): Dosya sadece kısmen yüklendi.
– `UPLOAD_ERR_NO_FILE` (4): Hiç dosya yüklenmedi.
Sonuç
PHP ile dosya yükleme süreci, belirli bir yapı ve güvenlik önlemleri gerektirmektedir. `$_FILES` süper globali, yüklenen dosyaların bilgilerini sağlarken, `move_uploaded_file()` fonksiyonu dosyanın güvenli bir şekilde taşınmasını sağlar. Doğru kontroller ve güvenlik önlemleri ile dosya yükleme işlemi etkin bir şekilde gerçekleştirilebilir. Bu süreç, web uygulamalarının kullanıcı etkileşimlerini artırmak için önemli bir bileşendir.


