PHP’de dosya yükleme işlemi genellikle HTML formu aracılığıyla gerçekleştirilir.
- HTML Formu Oluşturma (index.html):
<!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 Formu</title> </head> <body> <form action="upload.php" method="post" enctype="multipart/form-data"> <label for="file">Dosya Seç:</label> <input type="file" name="file" id="file"> <button type="submit" name="submit">Yükle</button> </form> </body> </html>
- PHP Dosya Yükleme (upload.php):
<?php if(isset($_POST["submit"])) { $targetDir = "uploads/"; // Dosyanın yükleneceği klasör $targetFile = $targetDir . basename($_FILES["file"]["name"]); // Dosyanın tam yolu // Dosyayı yükler ve yükleme başarılıysa mesaj verir if(move_uploaded_file($_FILES["file"]["tmp_name"], $targetFile)) { echo "Dosya başarıyla yüklendi."; } else { echo "Dosya yüklenirken bir hata oluştu."; } } ?>
Bu örnek, dosyanın uploads
klasörüne yüklenmesini sağlar. Klasörün yazma izinlerine sahip olduğunu ve güvenlik açısından dosya türlerini kontrol etmek için gerekli önlemlerin alındığını unutmayın.
Ayrıca, kullanıcı girişi veya diğer güvenlik konuları için gerekli önlemleri almalısınız. Bu örnek, temel bir dosya yükleme işlemini gösterir, ancak bir üretim ortamında daha fazla güvenlik önlemi almanız gerekebilir.
Dosya türünü sınırlamak için, yükleme işlemi öncesinde dosya uzantısını kontrol etmeniz gerekir. Aşağıda, sadece belirli dosya türlerine izin veren bir örnek görebilirsiniz. Dosyanın gerçekten bir resim olup olmadığını kontrol etmek için getimagesize()
fonksiyonunu kullanabilirsiniz. Bu fonksiyon, bir resmin genişliği, yüksekliği ve türü gibi bilgileri sağlar.
<?php if(isset($_POST["submit"])) { $targetDir = "uploads/"; // Dosyanın yükleneceği klasör $targetFile = $targetDir . basename($_FILES["file"]["name"]); // Dosyanın tam yolu $uploadOk = 1; // Dosya uzantısını kontrol et $fileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION)); $allowedExtensions = array("jpg", "jpeg", "png", "gif"); if (!in_array($fileType, $allowedExtensions)) { echo "Sadece JPG, JPEG, PNG ve GIF dosyalarına izin verilir."; $uploadOk = 0; } // Dosyanın gerçekten bir resim olup olmadığını kontrol et if ($uploadOk) { $imageSize = getimagesize($_FILES["file"]["tmp_name"]); if ($imageSize === false) { echo "Dosya bir resim değil."; $uploadOk = 0; } } // Dosyayı yükler ve yükleme başarılıysa mesaj verir if ($uploadOk && move_uploaded_file($_FILES["file"]["tmp_name"], $targetFile)) { echo "Dosya başarıyla yüklendi."; } else { echo "Dosya yüklenirken bir hata oluştu."; } } ?>
Bu örnekte, sadece “jpg”, “jpeg”, “png”, “gif” uzantılarına sahip dosyalara izin veriliyor. $allowedExtensions
dizisine istediğiniz uzantıları ekleyebilir veya kaldırabilirsiniz.
getimagesize()
fonksiyonu, yüklenen dosyanın bir resim olup olmadığını kontrol etmek için kullanılmaktadır. Eğer dosya bir resim değilse, kullanıcıya uygun bir hata mesajı verilir. Bu, yüklenen dosyanın içeriğini daha doğru bir şekilde doğrulamanıza yardımcı olabilir.