Bir oturum değişkeni sonradan alanını yeniden doldurmanız için bir dosyanın yolunu saklanması bir kullanıcı dosya girişi seçer

4 Cevap php

Ben bir MySQL veritabanı yükleme dosyaları için PHP bir script geliştiriyorum. Veritabanı giriş gitmek fiili dosyasına ek olarak seçilen gereken Orada çeşitli şeyler. Script uygun seçimleri tüm yapıldığından emin olmak için denetler şekilde tasarlanmış olması gerekir, ve onlar değilse komut kullanıcı nüfuslu hala seçmişti değerleri ile dosya yükleme durumuna geri döner. Ben oturum değişkenleri kullanarak bir seçme kutuları için bu başarılı, ancak ben göndermek için dosya yükleme girişinin gerçek yolunu almak için nasıl anlamaya olamaz. Ben sadece $ _file diziden dosya adı değil, gerçek yolu erişmek için görünebilir. Ben de aşağıdakileri yapmak için denedim:

echo "<input type='hidden' name='MAX_FILE_SIZE' value='8000000'>";
echo "<input type='hidden' name='remote_file_path' value=''>";
echo "<input name='userfile'type='file'
      onchange='document.uploadForm.remote_file_path.value=this.value;'>";

Doğal olarak, form adı "uploadForm" dir. $ _POST ['Remote_file_path'] değerini eriştiklerinde bu yine çalışır, ancak, ben sadece dosya adı değil, yol alıyorum. Biraz araştırma yaptıktan sonra bu Fire Fox yerleşik bir güvenlik özelliği olduğu görülmektedir. Ben yapılamaz düşünmeye başladım.

Şimdiden teşekkürler.

4 Cevap

Eğer keşfedilen gibi, güvenlik nedeniyle dosya seçme metin kutusunu doldurmak olamaz. Ancak, gerçekten yüklenen dosyaları korumak için dosya metin kutusunu doldurmak gerekmez.

Her zaman, bir dosya güvenli bir yere taşıyın ve ayrıca geçerli oturum veya kullanıcı ile bağlamak, sizin sunucuya yüklenir. Şimdi, kullanıcı bazı hata yapmış (ya da bir şey düzenlemek istiyor) çünkü formu yeniden görüntülemek zaman, kenarı boyunca dosya boş dosya kutusu görüntülenir. Bu şekilde, kullanıcı zaten yükledi hangi dosyaları görebilirsiniz. Bazı JavaScript ile kullanıcı tekrar dosya metin kutusunu doldurun ve sunucu işlenecektir başka bir dosya gönderebilirsiniz bunun üzerine dosya dışı geçmeye seçeneği verebilirsiniz. dosya kutusu boş ise, daha önce sunulan dosya geçerli bir kabul ve işlenmiş olacaktır.

Sen (bazı tarayıcılarda) tam dosya yolu almazsanız, ve bu eylemleri güvenlik problemleri gibi pozlar beri, bunlardan herhangi birinde (scripting) aracılığıyla bir <input type=file> değerini değiştiremezsiniz.

Sen gizli alanları gerekmez, PHP sizin için gönderilen verileri ayrıştırmak ve $ _FILES dizisindeki sunacak:

http://www.php.net/manual/en/features.file-upload.post-method.php

Birçok söylediler gibi, bunu HTTP üzerinden bir güvenlik sorunu olduğunu yapamam. Bir yerel makineden bir resim upload edilir ne olur fonksiyon patlar ve sunucu üzerinde erişilebilir tmp_name oluşturur.

Eğer gerçekten bu işlevi istiyorsanız ancak bir yerel yol almak için bir uygulaması yoluyla saf Java kullanabilirsiniz. Ancak ne yapmaya çalışıyorsun, bu konuda giderek yerine ne düşündüğünü daha iyi bir yolu olabilir.