(PHP 4 >= 4.0.3, PHP 5, PHP 7, PHP 8)
move_uploaded_file — Karşıya yüklenen bir dosyayı yeni bir yere taşır
Bu işlev, dosyaismi ile belirtilen dosyanın karşıya
yüklenen geçerli bir dosya olduğundan emin olduktan sonra (PHP'nin HTTP
POST mekanizması ile karşıya yüklenen bir dosya ise) dosyayı
hedef ile belirtilen adrese taşır.
Bir dosyanın karşıya yüklenmesi ile dosya içeriğinin kullanıcıya veya aynı sistem üzerindeki diğer kullanıcılara ifşa edilmesini sağlayacak şeyleri yapma şansı doğacaksa bu sınamalar oldukça önem kazanır.
dosyaismiKarşıya yüklenen dosyanın ismi.
hedefDosyanın taşınacağı adres.
Başarı durumunda true döner.
Eğer dosyaismi karşıya yüklenen geçerli bir dosya
değilse işlem gerçekleşmez ve işlev false ile döner.
Eğer dosyaismi karşıya yüklenen geçerli bir dosya
ise fakat bir sebeple taşınamıyorsa işlem gerçekleşmez ve işlev
false ile dönerken ek olarak bir uyarı çıktılanır.
Örnek 1 - Çok sayıda dosyanın karşıya yüklenmesi
<?php
$uploads_dir = '/uploads';
foreach ($_FILES["pictures"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["pictures"]["tmp_name"][$key];
// basename() dosya sistemi çapraz saldırılarını engelleyebilir;
// dosya isminin daha fazla doğrulanması/temizliği uygun olabilir
$name = basename($_FILES["pictures"]["name"][$key]);
move_uploaded_file($tmp_name, "$uploads_dir/$name");
}
}
?>Bilginize:
move_uploaded_file() işlevi open_basedir yönergesinden etkilenir. Bununla birlikte, karşıya yüklenecek dosyaların
hedef'e taşınmasına izin verilmesinden dolayı yapılacak işlem bu sınırlamalarla çelişir. move_uploaded_file() işlevi, karşıya yüklenecek dosyaların sadece PHP üzerinden taşınmasına izin vererek işlemin güvenliğini sağlar.
Hedefte bir dosya varsa üzerine yazılır.