Bazen olayın düğüm haline geldiğini düşündüğünüz anda temiz temiz sıfırdan başlamak gibisi yoktur. (Tabii çok büyük sistemi sıfırdan yazmaya başlamaktan bahsetmiyorum.)
Şimdi mantığını anlayarak yapmaya başlayalım.
1.) Öncelikle dosyayı seçeceğimiz, görünen formu oluşturalım.
<form action="yukle.php" method="post" enctype="multipart/form-data">
<label><input name="userfile" type="file" id="userfile" size="30" /></label>
<label><input name="btnYukle" type="submit" value="Yükle" /></label>
</form>
2.)Görünen kısmı böyle basit bir şekilde oluşturduktan sonra görünmeyen kısmı yapma aşamasına geçiyoruz.
$dosya = $_FILES['userfile']['name']; //dosya ismini aldık
// dosya uzantisina bir goz atalim.
function xuzanti($dosya) { 
$degerler = explode('.',$dosya);
$sonnokta = count($degerler)-1; 
$uzanti = $degerler[$sonnokta]; 
return $uzanti;
}
$uzanti = xuzanti($dosya);
//izin vermediğimiz uzantilari sadece kabul edelim.
function uzizin($uzanti){
switch ($uzanti) {
case 'rar':
$uzanti='evet';
break;
case 'RAR':
$uzanti='evet';
break;
case 'zip':
$uzanti='evet';
break;
case 'ZIP':
$uzanti='evet';
break;
case 'exe':
$uzanti='evet';
break;
case 'EXE':
$uzanti='evet';
break;
default:
$uzanti='hayir';
}
return $uzanti;
}
$izindurum = uzizin($uzanti);
//Eğer izin vermediğimiz bir uzantiya sahipse dosya, geriye gonderelim.
if ($izindurum == "hayir") {
echo "<script>alert(Dosya uzantısı .zip, .rar veya .exe olmalıdır.');location.href='dosyaekle.php';</script>"; exit;
}
// Dosya ismini degistir.
$rasgele = substr(md5(microtime()),0,14);
$yenidosya = $rasgele.".".$uzanti;
$uploaddir = 'store/'; //yuklencek klasor belirlenmesi.
$uploadfile = $uploaddir . $yenidosya;
if (move_uploaded_file($_FILES['userfile']['tmp_name'],$uploadfile)) {
echo "$yenidosya dosyasi, $uploaddir klasorune basariyla yuklenmistir.";
}
else { echo "Bu kodun calisirligindan 100% emin yazan kisi, acaba bende neden calismiyor?"; }