Gönderen Konu: Php Dosya Yükleme ( Upload ) İşlemi  (Okunma sayısı 726 defa)

Çevrimdışı By_kimlik

  • Trade Sayısı: (0)
  • Acemi Üye
  • *
  • İleti: 63
  • Karma +3/-0
  • Cinsiyet: Bay
    • Profili Görüntüle
    • Genel Forum
Php Dosya Yükleme ( Upload ) İşlemi
« : 03 Ara 2012, 09:15:12 »
Merhaba Phpnin En Zor Taraflarından Birisidir Sunucuya Dosya Yükleme Fonksiyonunu Yazmak.

Bu Makalede

Php Sunucuya Video Yükleme
Php Sunucuya  Resim Yükleme
 Php Sunucuya Metin Belgesi Yükleme
 Php Sunucuya  Müzik Yükleme


Gibi Başlıca Konuları Göreceksiniz.

Phpnin En İşlevsel Yönlerinden Bir Taneside Sunucuya Dosya Yükleme İşlemlerini Desteklemesinidir. Dosyaları HTTP Arabirimi Kullanarak Sunucudan Tarayıcıya Göndermek Yerine Tam Tersi Olan Tarayıcıdan Sunucuya Gönderme İşlemini Göstericem Sizlere.


Önelikle Bunun İçin Bir Dosya Yükleme Formu Hazırlamamız Gerekecek

Kod: [Seç]

<h2>[B]Dosya Yükleme Formu [/B]</h2>

<form enctype="multipart/form-data" action="upload.php" method="post">
<input type="hidden=" name="max_flle_size" value="1000000">
Upload Dosyası: <input name="userfile" type=file">
<input type"submit" value "Dosya Gönder">
</form>


Evet Formumuz Hazır  Dosyayı Buradan Sunucuya Göndericez.


Bu Kod Get İle Çalışmaz Post Metodu Kullanıldığına Dikkat Edin Aslında İstisnai Olarak Put Metodu İlede Gönderilebilir Fakat Bu Durumda Kodda Önemli Değişiklikler Yapılmalıdır.

Formun Niteliğininde Ayarlandığına Dikkat Edin enctype="multipart/form-data" Niteliğinin Verilmesi Gerekir Bu Durumda

 Hidden Olan Form Alanı Gizli Bir Alandır Ve Maximum Ne Kadar Boyuttaki Dosyayı Kabul Edeceğimizi Gösterir

File Olan Alan İse Dosyayı Sececeiğimiz Gözat Diyeceğimiz Alandır

Php Dosya Yükleme İçin Kodlar Yazmak

Şu Ana Kadar Gördüklerimiz İşin Html Kısmıydı

Bunun Asıl Zor Olan Tarafı Php Olan Taraftır.

 Dosyayı Yakalayacak Olan Phpyi Yazmak Son Derece Basittir Tabiki İşi Bilene Bu Birde Php Sürümüne Ve Konfgrasyon Ayarlarına Bağlıdır Bunların Ayarlarını İyi Yapmanız Gerekmekte Php Sürekli Güncellendiğinden Fonksiyon Adları Ve Konfgrasyon Ayarları Da Sürekli Güncellenmektedir.

Şu Anki Kod Register_Globals in Kullanılmasını Gerektimez Ama En Az 4.1 Sürümünü Kullanmanız Gerekiyor

 Dosya Yüklendiğinde Sunucuda Tmp Adı Verilen Geçiçi Bir Dizine Gider Oradan Asıl Yerine Taşımanız Gerekir.

Scriptin Çalısması Sonlandığında Geçici Dizinden Yüklemek İstediğiniz Dizine Taşınır Ve Gecici Dosya Sİlinir.

Biz Register_Globals Kapalıymış Gibi İşlem Yapıp Değişkenlere Direk Erişim Yapmacağız Çünkü Phpnin İleri Sürümlerinde Tam Olarak Kaldııralacağı Söyleniyor.

$_FİLES İle Yüklenen Dosyaya Erişim Sağlayacağız

Biz Buna Userfile Dediğimiz İçin

$_FILES["userfile"]["tmp_name"]; Olacaktır Daha Önce Söylediğimiz Gibi Dosyanın Geçiçi Olarak Tmp Dizininde Kopyalanır Ve Saklanır Siz Tmp Nameyi name yapabilirsiniz. Yada Başka Birşey Bunu Name Yaparanız Dosyanın Kullanıcının Dizindeki Adı Olur

Yani Söyle Olacaktır Ve Genelde Kullanılan Budur
$_FILES["userfile"]["name"]  Bu Dosyanın Seçilemediğini Gösterecektir Bize. Burada Söyle Bir Kod Yazabiliriz

Kod: [Seç]
if (empty($_FILES["resim"]["name"])) {
  echo '
    <script language="javascript">
        alert("Dosya Seçilmedi Lütfen Seçin .");
        history.back();
    </script>';
exit;
}


Burda Empty Nin Anlamı Boşsa Demek Olur Yani Files Boşşa Ekrana Seçilmedi Yazdırıcak Ve history.back Fonksiyonuylada Geldiği Sayfaya Yani Forma Geri Gönderim Yapacaktır.

$_FILES=["userfile"]["size]; İçinde Depolanan Değer Dosyanın Büyüklüğü Olacaktır

$_FİLES={"userfile"]["type"]; Dosyanın Türü Olacaktır Örneğin text/plain veya image/gif Gibi

$_FİLES={"userfile"]["error"]; Dosya Yüklenirken Herhangi Bir Hata Oluşması Durumundaki Hatayı Barındıran Değerdir.

Artık Kodları Yazabiliriz Bu Örnekte Bir Txt Dosyası Yükleyecez O Yüzden Kodlar Ona Göre Yazılmıştır

Kod: [Seç]

// Hata Kodları
if($_FİLES={"userfile"]["error"]){
echo" Hata Oluştu";

swtich($_FİLES={"userfile"]["error"]){
case"1";
echo" Dosya Çok Büyük";
break;
case"3";
echo" Dosya Aktarılırken Hata Oluştu Bir Kısmı Yüklenemedi ";
break;
case"4";
echo" Dosya Yüklenemedi";
break;
}
exit;
}
// Dosya Tipi Doğrumu ?
if($_FİLES={"userfile"]["type"]!= "text/plain"){
echo"Bir Txt Dosyası Seçmediniz  ";
exit;
}
// Dosyayı Taşı Ve İstediğimiz Yere Koy Bakalım

$upfile= "/upload/".$_FILES["userfile"]["name"] ;
if(is_uploaded_file($_FILES["userfile"]["tmp_name"]))
{
if(!move_uploaded_file($_FILES["userfile"]["tmp_name"], $upfile))
{
echo" Bir Problem Oluştu Dosyanın Dizini Mevcut Değil Lütfen upload Dizinini Oluşturun";
exit;
}}
else{
echo " Bir Problem Oluştu: Yüklemeye Çlaısılan Dosya Güvenilir Bir Dosya Değil";
echo$_FILES["userfile"]["name"];
exit;
}

echo" Dosya Upload İşlemi Başarı İle Gerçekleşti<br><br>";

// Dosya İçeriğini Yeniden Biçimlendir
$fp=fopen($upfile,"r");
$yükle=fread($fp,filesize($upfile));
fclose($fp);

$yükle =strip_tags($yükle);
$fp =fopen($upfile,"w");
fwrite($fp,$yükle);
fclose($fp);

// Nelerin Yüklendiğini Göster

echo" Dosya Yüklendi $yukle";


Evet Biraz Karışık Oldu Farkındayım Fakat Bir Dizi Güvenlik Önlemleri ALmamız Lazımdı İlginçtir Bu Kodların Çok Büyük Bir Kısmını Güvenlik Kontrolleri Oluşturmaktadır
İyisi DEğil En iyisi İçin